利用JQGrid动态删除多行数据,行号(即删除/增加数据)变化的问题

 

 

 

 

利用JQGrid删除多行数据:

 

利用JQGrid动态删除多行数据,行号(即删除/增加数据)变化的问题_第1张图片

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

 

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

利用JQGrid动态删除多行数据,行号(即删除/增加数据)变化的问题_第2张图片

 

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

 

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

 

Html

 

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

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

 

 

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

 

错误代码:

var selectedRowIds = $("#costList").jqGrid("getGridParam","selarrrow"); for(var i = 0;i < selectedRowIds.length ;i ++) { $("#costList").jqGrid("delRowData", selectedRowIds[i]); }

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

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

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

selectedRowIds[ i ]

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

 


 

修改后正确代码:

var consoleDlg = $("#delcostListDlg"); var selectedRowIds = $("#costList").jqGrid("getGridParam","selarrrow"); var len = selectedRowIds.length; for(var i = 0;i < len ;i ++) { $("#costList").jqGrid("delRowData", selectedRowIds[0]); }

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

每次都取第 0个数据

你可能感兴趣的:(html,Firebug,div)