【发布时间】:2016-10-21 16:17:08
【问题描述】:
我有大量的材料清单 (BOM),我已将它们加载到 jqGrid Treegrid 中。它有大约500行。出于各种原因,我试图将数据块保持在 64K 以下,因此在较大的 BOM 上,我没有加载最深的叶子,例如比 6 级更深的任何叶子。我想在用户选择扩展最初的节点时动态加载这些叶子开始折叠,因为它没有加载。大多数一切都按预期工作。用户可以折叠和展开任何已加载的节点。但是,当用户单击展开缺少子节点的节点时,服务器会返回它的所有子节点,并在树形网格中正确显示。如果这些子节点中的任何一个具有折叠节点,则用户可以将这些节点展开到分支的末尾。但这就是正常行为停止的地方。一旦用户单击展开任何缺少子节点的节点,则只能展开最近服务器响应中包含的节点。什么都不能倒塌。报错是:
An unexpected error has occurred:
'Unable to get property 'isleaf' of undefined or null reference'
The url is ''
The line number is 92
行号所指的源文件是grid.treegrid.js
以下是扩展缺少子节点的小节点的示例响应。
{"page":"1",
"total":"1",
"records":"3",
"rows":[
{"id":"491","hide":false,"cell":["491","M-065934-1","BRACKET","M","1","1",".00","","$.00","478","7","false","false"]},
{"id":"492","hide":false,"cell":["492","M-065934-2","COLLAR","M","1","1",".00","","$.00","478","7","false","true"]},
{"id":"493","hide":false,"cell":["493","PD M6 X 20","PIN,DOWEL","P","2","2",".00","","$.00","478","7","false","true"]}
]}
每行中的最后四个值是 parent、level、expanded 和 isleaf。在这种情况下,一旦加载数据,只有行 491 是可展开的,并且围绕这三行的行(包括父行 478)都不可折叠。我需要看什么来确定问题?加载有影响吗?我没有手动设置加载任何行。当我加载网格时,我知道哪些行已卸载子项。我需要手动设置该值吗?
jqGrid(免费):4.4.3
jQuery:1.9.0
jQuery UI:1.8.23
编辑:我已升级到以下版本:
jqGrid(免费):4.11.1
jQuery:1.12.4
jQuery UI:1.10.4
在这些版本之外,我遇到了正在加载的 require.js 的问题,但似乎与我的配置不匹配。我得到了同样的错误(虽然行号不同)现在是错误:
An unexpected error has occurred:
'Unable to get property 'expanded' of undefined or null reference'
The url is 'http://as400/rui/scripts/jqgrid-4.11.1/js/jquery.jqgrid.min.js?v=5.15b'
The line number is 554
问题的根源还是一样。虽然 treegrid 数据在网格中仍然可见,但它似乎对 jqgrid 脚本不可见。无法访问加载之前存在的行的属性,但在更新期间加载的行确实可用、可扩展(一次),并且位于网格中的正确位置。
【问题讨论】:
-
您使用(可以使用)哪个版本的 jqGrid 以及 jqGrid 的哪个分支(free jqGrid、商业Guriddo jqGrid JS 或版本 grid.treegrid.js中的第92行在不同版本的jqGrid中有不同的内容。此外,您发布的数据应与 JavaScript 代码相对应,您也应将其包含在内。我建议您尝试从CDN 加载免费的 jqGrid 4.13.4 并重复您的测试。
-
4.13.4 有什么特别之处吗?我从 github 下载了 4.13.5,但是没有用。我使用的软件是一个包含 jqGrid 的开源框架。我猜它已经很老了。
-
1) 4.4.3 版本太旧,很久没有支持了。 2)我在免费的jqGrid fork中更改了TreeGrid的代码以提高它的性能。您写道,您在 TreeGrid 中加载了许多节点。因此,它可能对您有所帮助。 3) 如果您的代码不起作用,那么您应该创建演示,它使用非缩小的 jqGrid (
jquery.jqgrid.src.js) 并重现问题。或者,您应该至少发布创建 jqGrid 的 JavaScript 代码。 -
我将尝试在我的项目中升级 jQuery 和 jqGrid。我可能会有问题。
-
我现在尽可能地升级了。为了更进一步,我将不得不为 require.js 制定适当的依赖关系这是否让您更接近能够帮助我?
标签: javascript jqgrid