Ext JS4 学习笔记之发送表单(Form)时也将表单下的表格(Grid)数据一同发送的方法
昨天在开发的时候遇到个小问题,就是如何将Grid的内容与Form一起发送到服务器端。默认情况下,表单(Form)里的表格(Grid)数据是不随表单一起发送的,这个时候就需要我们将表格里的数据做一下处理。有两种思路,第一种就是发送完Form以后用一个回调函数,再将Grid的数据取出来再发送,这样略嫌麻烦,还得考虑表单发送成功与否等问题;第二种就是讲Grid里的数据分别遍历出来,组成一个Json数据,放到表单里隐藏的一个域里,然后随表单一起发送出去。我采取的是第二种方法,详细代码如下:
1 var myStore = Ext.getCmp(‘myGrid‘).getStore(); //取出列表的Store 2 var myRecord= myStore.getRange(); //将Store里的所有record放到myRecord里 3 var myJson = []; 4 for(var i in myRecord){ //遍历所有的record,将其放置在对应的myJson数组里 5 myJson .push({ 6 ‘a‘: myRecord[i].get(‘a‘), 7 ‘b‘: myRecord[i].get(‘b‘), 8 ‘c‘: myRecord[i].get(‘c‘), 9 ‘d‘: myRecord[i].get(‘d‘), 10 ‘e‘: myRecord[i].get(‘e‘), 11 ................................... 12 }); 13 }; 14 Ext.getCmp(‘hiddenField‘).setValue(Ext.encode(myJson));//编译myJson数组为一个Json对象,并放置在id为‘hiddenField’的隐藏域里,注意隐藏域要放置在表单里。
好了,这样再提交表单的时候,就会将表格(Grid)里的数据随着表单一起发送到服务器端,而且是以Json数据格式发送的。