我将 jqGrid 与loadonece: true
. 我正在使用客户端排序和过滤。当我尝试在包含 8000 条记录的网格中搜索时,出现脚本无响应错误。所以我想知道是否对数据有任何限制。尽管在 jqGrid 文档中,我没有发现loadonce:true
.
问问题
343 次
2 回答
1
限制非常依赖
- 您使用的网络浏览器。IE6 有不同的慢 JavaScript 引擎,例如谷歌浏览器有快速引擎。每个 Web 浏览器的每个新版本都会提高 JavaScript 的性能。
- 您使用的 jqGrid 的选项。如果您使用大页面大小(
rowNum
值),则使用gridview: true
选项非常重要(有关更多信息,请参见答案)。您应该减少使用类似setCell
或setRowData
特别是在循环中的方法(例如,在loadComplete
or内的所有行上循环gridComplete
)。而不是应该使用cellattr
和自定义格式化程序。rowattr
- 您使用的列数(包括隐藏行)。具有许多列的网格会降低网格的性能。
一般来说,我不会使用 8000 行的本地网格。大约 1000 行的本地网格的性能已经足够慢了。我建议您使用服务器端分页、排序和过滤。SQL Server 在本机代码中实现了所有功能并且可以使用数据库中的索引,可以像 JavaScript 一样更有效地实现所有功能。
于 2012-11-19T08:31:15.730 回答
0
我的项目最近遇到了大约 18000 条记录的相同问题。它在 Chrome 和 Firefox 上的运行时间相当合理,但在 IE8 上,它抛出了你遇到的同样的错误。在定义 8k 记录是否足够时,您需要考虑许多因素,其中一些是:
- 您显示的列数
- 您用于每列的格式
- jqGrid中支持显示的数据量
- 您拥有的初始排序逻辑。
此外,您应该考虑是否真的想将整个 8000 条记录泵入浏览器,用户不太可能查看单个记录。如果确实需要,处理 8000 条记录,我建议您考虑使用服务器端分页。服务器端分页的警告是您必须在服务器端处理排序、搜索和过滤。
于 2012-11-19T08:37:30.677 回答