easyUI中datagrid的使用与遇到的问题

1.使用方法

//取消所有的选中行
$("#grid").datagrid('clearSelections');
$("#grid").datagrid('clearChecked');

//获取所有选中行的信息
$("#grid").datagrid('getSelections');
$("#grid").datagrid('getChecked');

//取消要选中的行
$("#grid").datagrid('unselectRow',index);
$("#grid").datagrid('uncheckRow',index);

2.遇到的问题、原因分析和解决方法

(1)问题一:不能全部取消要取消的项
    问题描述:在使用datagrid的时候,使用循环对选中项中不需要的项的取消,发现不能不需要的项不能全部被取消。
错误代码:

  var rows =  $("#grid").datagrid('getChecked');         //获取选中的行
  var flag = true;
  for(var i = 0; i < rows.length ; i++){
  if(!!!rows[i].receive_grid && !!!rows[i].receive_user_id ){
      if(flag){
           flag = true;
        }
   }else {
       flag = false;
       //使用index索引进行查询,$("#grid").datagrid('getRowIndex', rows[i].id)使用id来查询索引
      $("#grid").datagrid('uncheckRow', $("#grid").datagrid('getRowIndex', rows[i]));
  }

错误原因分析:
   使用$("#grid").datagrid('getChecked');来获取的OBJ对象是动态的,进行一次循环修改后,$("#grid").datagrid('getChecked');;获取到的对象就和之前不一样了,用$("#grid").datagrid('getRowIndex', rows[i]也无法获取到正确的索引。

解决方法:
   将$("#grid").datagrid('getChecked');序列化成JSON.parse(JSON.stringify( $("#grid").datagrid('getChecked')));这样能保证这个对象是不会改变,并使用$("#grid").datagrid('getRowIndex', rows[i].id)用id来进行索引的获取,保证索引的正确性。

正确代码:

  var rows = JSON.parse(JSON.stringify(  $("#grid").datagrid('getChecked')));     //获取选中的行,进行序列化
  var flag = true;
  for(var i = 0; i < rows.length ; i++){
  if(!!!rows[i].receive_grid && !!!rows[i].receive_user_id ){
      if(flag){
           flag = true;
        }
   }else {
       flag = false;
       //使用index索引进行查询,$("#grid").datagrid('getRowIndex', rows[i].id)使用id来查询索引
      $("#grid").datagrid('uncheckRow', $("#grid").datagrid('getRowIndex', rows[i].id));    
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值