jqgrid删除多行数据问题

 

利用JQGrid删除多行数据:

 

jqgrid删除多行数据问题_第1张图片

所选中行号依次为 1、2、4

 

利用FireBug 查看由 js 动态生成的 html 标签可以验证:

jqgrid删除多行数据问题_第2张图片 

 

可以看出每行的行号就是它的 id号

 

点击删除后,如果会动态变化那么缴费记录编号为3 的这行数据行号应该变为 1 :

 

Html:

 

从此可以看出剩下的这行 id仍是 3 ,所以行号是不会动态变化的。

其实按常理来推测行号也是不会动态变化的,因为在添加、删除的过程中只是对所选择的数据行进行更新,并没有刷整个数据表的div ,所以不会动态的调整行号(也许以后的插件中会动态的刷新整个 div )。

 

 

在删除的过程中还遇到了另一个问题:选中多行数据时总是删不干净,总是会残留一两行。

 

错误代码:

[java]  view plain copy
  1. var selectedRowIds =   
  2. $("#costList").jqGrid("getGridParam","selarrrow");  
  3. for(var i = 0;i < selectedRowIds.length ;i ++) {  
  4. $("#costList").jqGrid("delRowData", selectedRowIds[i]);  
  5. }  

selectRowIds是一个指向选中行数组的一个引用,在用 jqgrid删除数据时会动态的变化;

所以在循环中i的循环条件会在每一次循环后都在动态变化,故会出问题.

由于 selectedRowIds 动态变化, i也动态变化,所以此种

selectedRowIds[ i ]

取法也有问题,它不会每次都取这个数组的第一个数据.

 


 

修改后正确代码:

[java]  view plain copy
  1. var consoleDlg = $("#delcostListDlg");  
  2. var selectedRowIds =   
  3. $("#costList").jqGrid("getGridParam","selarrrow");  
  4. var len = selectedRowIds.length;  
  5. for(var i = 0;i < len ;i ++) {  
  6. $("#costList").jqGrid("delRowData", selectedRowIds[0]);  
  7. }  

将数组的长度赋给一个变量,则循环的条件就不会变化了 ;

每次都取第 0个数据

原文:http://blog.csdn.net/drykilllogic/article/details/6112516

你可能感兴趣的:(jqGrid)