easyui-editing datagrid 批量保存数据 二

2 篇文章 0 订阅
0 篇文章 0 订阅

 接着上篇博客继续,我们的批量保存。

      

    当我们使用了updaterow来更新了datagrid中的数据时,怎么获取到数据,这里我们不能使用便捷的getchanges ,只能绕一个道了,我们选择一个万无一失的方法,就是通过easyui的getRows来拿到datagrid中所有的数据行。


  二、第二种———getRows


      解决方案就是拿到datagrid中所有的数据,json的形式传递。

    如何取得datagrid的行数:getRows, 转换成json :JSON.stringify("***");    

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-size:18px;">//save all the dada from easyuiDatagrid  
  2. function updateDatagrid(num)  
  3. {  
  4.     var rows = $('#dg').datagrid('getRows');  
  5.     var entities = "";</span></span>  
[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-size:18px;">// 循环 datagrid 中现有的数据,并且逐行复制给Entities ,并且转换成json格式</span></span>  
[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-size:18px;">// 在后台反序列话成对象的对象集合。  
  2.     for(i = 0;i < rows.length;i++)  
  3.     {  
  4.        entities = entities  + JSON.stringify(rows[i]);    
  5.     }  
  6.     $.ajax({  
  7.              url: getRootPath()+'/labour/update.do',  
  8.              type: "post",  
  9.              async: true,  
  10.              dataType: 'json',  
  11.              data: {'entities': entities}  
  12.              success: function (data) {  
  13.                  if(data.message=="操作成功!"){  
  14.                         alert(data.message);  
  15.                     }else{  
  16.                         alert(data.message);  
  17.                         return;  
  18.                     }  
  19.                  $('#dg').datagrid('reload');  
  20.              }  
  21.            });  
  22.      
  23.     }</span></span>  

     后台的接收: 这里使用的解析json的工具是 net.sf.json。主要使用的是jsonarray 和jsonobject ,从字面上就可以看出:一个是负责数据/集合的,一个是负责单个对象的。这里我们要解析的是数组,所以使用的是jonsarray中的tocollection 方法,jsonarray还有很多其他方法,有兴趣的可以看看。

   具体的代码如下:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-size:18px;">   import net.sf.json.JSONArray;  
  2.     import net.sf.json.JSONObject;<span>  </span></span><pre name="code" class="java"><span>  @Override</span></span>  
@RequestMapping("update.do")
@ResponseBody
 
[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <span style="font-family:KaiTi_GB2312;font-size:18px;"></pre><pre name="code" class="java"></span>  
[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <span style="font-family:KaiTi_GB2312;font-size:18px;"></pre><pre name="code" class="java"></span>  
[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-size:18px;"><span>   </span>public String update(HttpServletRequest request) {  
  2.         //1、 get the detail data  
  3.         String ens = request.getParameter("entities");  
  4.           
  5.         // 2、format the string  
  6.         ens = ens.replace("}{""},{");  
  7.         ens = "[" + ens.toString() + "]";</span></span>  
[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-size:18px;"><span>       </span>// 3. <span style="font-family: Arial, Helvetica, sans-serif;">transform to the object list</span>  
  2.         JSONArray array =JSONArray.fromObject(ens.toString());  
  3.         @SuppressWarnings("unchecked")  
  4.         List<JobContentDetail> listDetail=(List<JobContentDetail>)JSONArray.toCollection(array, JobContentDetail.class);  
  5.         try {  
  6.             labourservice.saveData(listDetail);  
  7.         } catch (Exception e) {  
  8.             e.printStackTrace();  
  9.             return createErrorMessage("操作失败!").toString();  
  10.         }  
  11.         return createSuccessMessage("操作成功!").toString();  
  12.     }</span></span>  

     三、使用心得

     一边编辑,一边保存也好;先编辑,后批量保存也好,他们的解决方案都是一样的,因为easyui的datagrid (当然还有combobox)的接收数据类型是json ,所以,我们只要可以拿到前台显示的json数据,所有的东西就好解决了,从前台向后台传递,只要URL给对了,那么一切就顺利成章了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值