使用本地网格删除Free-jqGrid中的多行(4.15)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用本地网格删除Free-jqGrid中的多行(4.15)相关的知识,希望对你有一定的参考价值。
我在这里看到许多参考实现,以实现在jqGrid中删除多于1个选定行的能力。
但是,所有这些实现最终都会对行ID列表进行迭代,并在每个行中调用delRowData。
当一个人选择说1000行时,这不能很好地扩展,因为我们似乎等待每行删除o(n),导致整个操作的o(n ^ 2)。
有没有办法用一个o(n)删除所有选定的行?
(我读过的一篇文章是将它发送到服务器,只是从头开始重新加载所有东西,因为整体节省时间非常高。我正在寻找jqGrid内部的内置方法)
谢谢,
的。
我从共同的评论开始。不建议在页面上显示更多行,因为它可以一次显示。与每页1000行的使用相比,网格的性能(例如,每行10000行和25行)是必不可少的。
无论如何,本地网格中多行数据的常见更改不是使用delRowData
或addRowData
。替换整个数据更有效。典型代码将是
var grid = $("#grid"),
p = grid.jqGrid("getGridParam"); // get reference to all parameters
p.data = newdata; // replace data parameter
grid.trigger("reloadGrid");
所以我建议你获取数据的副本(或者你已经有网格外的数据),删除带有id的项目,需要删除,设置p.data
的新值并触发reloadGrid
以显示第一页修改过的数据
顺便说一句,正如你所描述的那样,使用delRowData
的速度要慢得多。原因是web browser reflow。如果您的页面包含例如1000x10元素而您只删除了第一行(您更改了10个元素),那么Web浏览器必须重新计算页面上几乎所有现有元素的CSS样式(例如位置)。然后删除第二行几乎是如此复杂。因此,在循环中使用delRowData
或addRowData
将是非常无效的。在重新加载网格时,jqGrid将整个网格体构建为一个html片段,并在一次操作中将其放置在页面的DOM上。因为网格的重新加载可能非常快。
以上是关于使用本地网格删除Free-jqGrid中的多行(4.15)的主要内容,如果未能解决你的问题,请参考以下文章