Ext JS4 学习笔记之发送表单(Form)时也将表单下的表格(Grid)数据一同发送的方法
Posted on 2014-01-24 14:51 front-Thinking 阅读(1067) 评论(0) 编辑 收藏 举报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数据格式发送的。
---------------------------------------华丽的分割线--------------------------------------
昨天在开发的时候遇到了同样的问题,但是这次是不用随表单一同发送的,而是单独发送出去grid的数据。其实在官方有推荐的方法,一同将数据发送过去到服务器端。这次呢,来一个笨方法,直接封装到json数据里,用一个ajax请求发送到服务器端即可。代码如下:
1 Ext.Ajax.request({ 2 url: 'your_url' , 3 params: { 4 id: this.id, 5 jsonData: Ext.encode(myJson)/其中myJson即是上面封装好了的myJson数据 6 }, 7 success: function(response){ 8 var text = response.responseText; 9 alert(text); 10 } 11 });