gpt4 book ai didi

jquery - jqGrid treeGrid 捕获展开折叠事件

转载 作者:行者123 更新时间:2023-12-01 00:45:49 28 4
gpt4 key购买 nike

我使用 jqGrid 来构建一些大树。现在我想记住cookie中展开和折叠的节点

所以我想捕获展开和折叠事件。我在手册中找不到它

所以我是这样解决的

grid.find("div.treeclick").bind("click",function(e){
classes = $(this).attr('class');
//returns:
//ui-icon treeclick ui-icon-triangle-1-s tree-minus
//ui-icon treeclick ui-icon-triangle-1-e tree-plus
if(classes.indexOf('-minus') != -1)
alert ('Expand!');
else if(classes.indexOf('-plus') != -1)
alert ('Collaps!')
});

有人可以提出另一种方法吗?

最佳答案

目前 jqGrid 中没有事件或回调可以帮助您捕获树节点的折叠或展开。

一般来说,您发布的代码会进行正确的测试。然而,您自己对解决方案并不完全满意。我也觉得不太好。我看到的最大问题是您测试哪个图标具有按钮,但该图标将被网格中相同事件的原始处理程序更改。绑定(bind)的顺序应该非常重要。

在你的地方,我更喜欢在不存在事件的情况下使用子类化技术。这非常简单,但 100% 有效。

树网格有方法 expandNodecollapseNode已记录在案。如果单击节点图标,该方法也会由 jqGrid 在内部调用。方法expandNode来电 reloadGrid显示展开的树。

所以我建议在创建树网格后添加以下代码:

var orgExpandNode = $.fn.jqGrid.expandNode,
orgCollapseNode = $.fn.jqGrid.collapseNode;
$.jgrid.extend({
expandNode: function (rc) {
alert('before expandNode: rowid="' + rc._id_ + '", name="' + rc.name + '"');
return orgExpandNode.call(this, rc);
},
collapseNode: function (rc) {
alert('before collapseNode: rowid="' + rc._id_ + '", name="' + rc.name + '"');
return orgCollapseNode.call(this, rc);
}
});

您可以在 the demo 上查看结果.

更新: Free jqGrid支持回调和事件,这使得上面的expandNode被覆盖和collapseNode不需要。它已经支持在展开或折叠节点或行之前或之后调用的附加回调。回调名称:treeGridBeforeExpandNode , treeGridAfterExpandNode , treeGridBeforeCollapseNode , treeGridAfterCollapseNode , treeGridBeforeExpandRow , treeGridAfterExpandRow , treeGridBeforeCollapseRow , treeGridAfterCollapseRow以及相应的 jQuery 事件 jqGridTreeGridBeforeExpandNode , jqGridTreeGridAfterExpandNode , jqGridTreeGridBeforeCollapseNode , jqGridTreeGridAfterCollapseNode , jqGridTreeGridBeforeExpandRow , jqGridTreeGridAfterExpandRow , jqGridTreeGridBeforeCollapseRow , jqGridTreeGridAfterCollapseRow 。所有回调都有一个参数:options ,它有两个属性:rowiditemitem是节点,它将展开/折叠。

关于jquery - jqGrid treeGrid 捕获展开折叠事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9178682/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com