0

问题:

给定一个 DOJO TreeGrid,当用户单击 expando ("+") 按钮以展开一行并存储特定行号或关联项目的标识符时,我如何捕获事件?我想这样做是为了从 DOM 中完全删除 TreeGrid,重建它,并在重建后恢复它的状态(即以编程方式扩展用户先前扩展的行)。

背景:

所以我有一个自定义 DOJO TreeGrid,连接到自定义 QueryReadStore,在我的应用程序中。它是使用以下教程构建的:

http://www.ibm.com/developerworks/web/library/wa-dojotreegrid/index.html?ca=drs-

非常有趣的教程,但它可能与我的问题无关,因为它并没有真正压缩任何功能,它似乎只是增强了它。

无论如何,谷歌搜索了一下,我在 DOJO 论坛中发现了一个不错的函数,我可以使用它以编程方式扩展一行,给定特定的行索引。完美运行。

问题是我一直无法找到捕获expando click 事件并将其与网格中特定的“父项行”索引相关联的好方法。

抛开细节不谈,我想将用户展开的每一行的行索引放入一个数组中(并删除用户折叠的行的索引,显然),这样我就可以销毁这个 TreeGrid,并忠实地重建它,随着用户的选择正确扩展。

我不是 DOJO 的新手,但我绝对不是专家。我已经进行了相当多的谷歌搜索和 FireBugging,但还没有真正找到可以用来执行此操作的任何东西。

建议?以前有人做过类似的事情吗?愚蠢的问题,我错过了明显的答案?我完全被误导了,一切都错了吗?谢谢大家!

4

1 回答 1

0

与此类似的东西可能会起作用,这就是 dijit.Tree 实现的样子;

var expandedNodes = {}
dijit.tree._onExpandoClick = function (args /* object wrap for args.node */) {
   var treeNode = args.node,
       path = treeNode.getTreePath(),
       id = treeNode.getIdentity();

   expandedNodes[id] = path;

}

我不是 100% 确定我是严格正确的,但对于 TreeGrid,您必须查看dojox/grid/_TreeView.js的代码(链接)。这_setOpen将是一个入口点,您可以从中“挂钩” onclick 操作。从那里找到expandoCell.openStates哈希,这是一个真/假变量集,由 itemId 索引。这个散列很可能是你需要的状态

于 2012-05-28T10:22:29.933 回答