【问题标题】:Dojo 1.4.2 Tree Grid "expando click" event? persist state?Dojo 1.4.2 Tree Grid“展开点击”事件?坚持状态?
【发布时间】:2012-05-26 00:54:28
【问题描述】:

问题:

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

背景:

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

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

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

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

问题是我一直没能找到捕捉expando点击事件的好方法,并将它与网格中特定的“父项行”索引相关联。

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

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

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

【问题讨论】:

    标签: dojo treegrid


    【解决方案1】:

    类似的东西可能会起作用,这就是 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 (link) 的代码。 _setOpen 将是一个入口点,您可以从中“挂钩” onclick 操作。从那里找到expandoCell.openStates 哈希,这是一个真/假变量集,由 itemId 索引。这个散列很可能是您作为 state

    所需要的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-21
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多