jqGrid 的 addRowData 挂起大量记录

Posted

技术标签:

【中文标题】jqGrid 的 addRowData 挂起大量记录【英文标题】:jqGrid's addRowData hangs for large number of records 【发布时间】:2012-09-16 08:53:06 【问题描述】:

jqGrid 的addRowData(idColumnName, array, direction, position) 接受一个行数组并将它们插入到网格的当前页面中,忽略任何分页设置。因此,如果一个数组包含 3,000 行,则将所有 3,000 行都插入到当前页面中。

这会在大多数浏览器中引发“无响应脚本”错误。

可以使用哪些“技巧”在 jqGrid 的特定位置插入大量行(即 3,000 行)并使其遵守分页设置?

【问题讨论】:

为什么不使用分页?所以你不必一次拉这么多行? 这些行是在客户端生成的,而不是在服务器端生成的,所以服务器端的分页是不可能的。 【参考方案1】:

使用addRowData 更新(或添加)大量页面是错误的方式。 jqGrid 使用内部的data_index 选项来保存本地数据(例如,参见here、here 和here)。因此,您可以获得关于getGridParam 的内部data 参数的引用。然后你可以以任何方式更新数组。您还应该将新添加的行的索引放在_index 中,或者调用refreshIndex(代码示例参见here)来重建_index。在最后一种情况下,您必须拥有完整的数据源 (data),其中也包含 id 属性。毕竟你应该重新加载网格(参见herereloadGrid的参数)以显示更新的网格。

【讨论】:

非常感谢!我现在更新“数据”参数并重新加载网格。这样,jqGrid 尊重分页设置。

以上是关于jqGrid 的 addRowData 挂起大量记录的主要内容,如果未能解决你的问题,请参考以下文章

运行addRowData时,jqGrid分组功能消失

JqGrid把数据行插入指定位置的方法addRowData

使用jqGrid过程中出现的问题

jqgrid 禁用默认客户端排序并手动处理

如何在不重新加载网格的情况下将行添加到下一页中的 jqGrid?

jqgrid rows怎么设置