Dojo 1.4.2树状网格“expando click”事件?持续状态?

Dojo 1.4.2树状网格“expando click”事件?持续状态?,dojo,treegrid,Dojo,Treegrid,问题: 给定一个DOJO TreeGrid,当用户单击expando+按钮展开一行并存储特定的行号或关联项的标识符时,如何捕获事件?我这样做的明确目的是从DOM中完全删除TreeGrid,重建它,并在重建后恢复它的状态,即以编程方式扩展用户以前扩展的行 背景: 因此,我在我的应用程序中有一个自定义DOJO TreeGrid,连接到一个自定义QueryReadStore。它是使用以下教程构建的: 非常有趣的教程,但它可能与我的问题无关,因为它实际上并没有挤压任何功能,它似乎只是在扩充它 总之,在G

问题:

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

背景:

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

非常有趣的教程,但它可能与我的问题无关,因为它实际上并没有挤压任何功能,它似乎只是在扩充它

总之,在Google上搜索了一会儿,我在DOJO论坛中发现了一个很好的函数,可以在给定特定行索引的情况下,使用它以编程方式扩展行。工作完美

问题是我没有找到一个好方法来捕获expando click事件,并将其与网格中的特定父项行索引关联

撇开细节不谈,我想将用户展开的每一行的行索引放入一个数组中,并删除用户折叠的行的索引,显然,这样我就可以销毁这个树ID,并忠实地重建它,同时正确地展开用户的选择

我不是DOJO的新手,但无论如何我都不是专家。我做了很多谷歌搜索和Firebug搜索,但还没有找到任何可以用来做这件事的东西


建议?以前有人做过类似的事情吗?愚蠢的问题和明显的答案,我错过了?我完全误入歧途了,是不是都搞错了?谢谢大家

类似的东西可能会起作用,这就是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索引。这个散列最有可能是您需要的状态