front-Thinking

志存高远,天道酬勤
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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 });