jqgrid树型图的多节点扩展

jqgrid树型图的多节点扩展,jqgrid,Jqgrid,我正在使用jqgrid的treegrid,并且正在根据请求加载子节点的数据。 但是,当用户单击一个节点(比如node1)展开它并立即单击另一个节点(比如node2)时,第一个节点(node1)的子节点将显示给第二个节点(node2),node2的图标更改为显示为展开,但它包含node1的子节点的数据,而折叠node2除了折叠node1折叠node1的子节点(显示为node2的子节点)之外什么都不做 还有其他人面临这样的问题吗?jqgrid的数据是json格式的邻接模型。它看起来像jqgrid中的

我正在使用jqgrid的treegrid,并且正在根据请求加载子节点的数据。 但是,当用户单击一个节点(比如node1)展开它并立即单击另一个节点(比如node2)时,第一个节点(node1)的子节点将显示给第二个节点(node2),node2的图标更改为显示为展开,但它包含node1的子节点的数据,而折叠node2除了折叠node1折叠node1的子节点(显示为node2的子节点)之外什么都不做


还有其他人面临这样的问题吗?jqgrid的数据是json格式的邻接模型。

它看起来像jqgrid中的一个bug。我查看了代码,我想我理解这个问题

每次用户单击“展开”图标时,将执行调用
expandRow
expandNode
方法的操作。
expandNode
的代码首先覆盖jqGrid的
treeANode
参数的当前值,该参数在内部用于标识将添加新数据的行。然后,将设置对服务器的新请求的
nodeid
parentid
(或
n_left
n_right
用于
'nested'
网格模型)和
n_level
参数,然后将触发
reloadGrid

问题是,稍后在处理内部
填充
方法开头的
reloadGrid
期间,将测试内部
.grid.hDiv.loading
属性,如果该属性被设置为上一个仍然挂起的请求,则将跳过第二次重新加载网格。问题是
treeANode
参数的值已经更改。因此,作为第一个扩展节点的子节点返回的项目将作为最后单击的节点的子节点添加

作为bug修复,我建议修改代码如下

} else if (!this.grid.hDiv.loading) {
这样,如果另一个挂起的请求仍在处理中,则第二次单击不会覆盖
treeANode
参数

您可以从修改后的
jquery.jqGrid.src.js
版本下载,并测试bug修复后问题是否会得到解决。如果它能解决问题,我会发布相应的bug报告,并建议如何解决问题


作为另一种解决方法,您可以使用jqGrid的
loadui:'block'
选项,该选项在处理对服务器的挂起请求期间不允许任何用户交互。

这看起来像是jqGrid中的一个bug。我查看了代码,我想我理解这个问题

每次用户单击“展开”图标时,将执行调用
expandRow
expandNode
方法的操作。
expandNode
的代码首先覆盖jqGrid的
treeANode
参数的当前值,该参数在内部用于标识将添加新数据的行。然后,将设置对服务器的新请求的
nodeid
parentid
(或
n_left
n_right
用于
'nested'
网格模型)和
n_level
参数,然后将触发
reloadGrid

问题是,稍后在处理内部
填充
方法开头的
reloadGrid
期间,将测试内部
.grid.hDiv.loading
属性,如果该属性被设置为上一个仍然挂起的请求,则将跳过第二次重新加载网格。问题是
treeANode
参数的值已经更改。因此,作为第一个扩展节点的子节点返回的项目将作为最后单击的节点的子节点添加

作为bug修复,我建议修改代码如下

} else if (!this.grid.hDiv.loading) {
这样,如果另一个挂起的请求仍在处理中,则第二次单击不会覆盖
treeANode
参数

您可以从修改后的
jquery.jqGrid.src.js
版本下载,并测试bug修复后问题是否会得到解决。如果它能解决问题,我会发布相应的bug报告,并建议如何解决问题


作为另一种解决方法,您可以使用jqGrid的
loadui:'block'
选项,该选项在处理对服务器的挂起请求期间不允许任何用户交互。

的“3.3版中的新版本->树网格”中的演示也有相同的问题。这是jqgrid中的一个bug。的“新版本3.3->Tree Grid”中的演示也有同样的问题。这是jqgrid中的一个bug。我也在检查代码,是的,不允许像您建议的那样更改node2,但是如果可以在reloadGrid方法中进行修复,那么jqgrid可以支持同时扩展节点。感谢Oleg,我知道您可以提供帮助:),但如果支持多个扩展节点,则更好的修复方法是。@user976634:我同意如果允许同时进行ajax请求,则更好,但它的实现将遵循许多jqGrid模块中的重大更改。因此,我建议首先修复现有的错误。@user976634:我提出要确保Tony会阅读有关问题和建议的错误修复。我也在阅读代码,是的,不允许按照您的建议更改node2,但如果修复可以在reloadGrid方法中实现,那么jqgrid可以支持同时扩展节点。感谢Oleg,我知道您可以提供帮助:),但如果支持多个扩展节点,则更好的修复方法是。@user976634:我同意如果允许同时进行ajax请求,则更好,但它的实现将遵循许多jqGrid模块中的重大更改。所以我建议首先修复现有的bug。@user976634:我摆姿势是为了确保Tony会阅读关于这个问题和建议的bug修复。