dgrid 0.4.0 树在用户交互之前看起来很平坦

Posted

技术标签:

【中文标题】dgrid 0.4.0 树在用户交互之前看起来很平坦【英文标题】:dgrid 0.4.0 tree looks flat before user interacts 【发布时间】:2015-03-05 23:08:09 【问题描述】:

尝试使用 dgrid 0.4.0 显示树结构。 (没有以前版本 0.3.x 的经验)。

我用两个文件夹构建了这个示例:alice 和 bob;每个都会有一些文件(叶子)。

商店(“astore.js”)

define(['dojo/_base/declare',
       './dstore/Memory',
       './dstore/Tree'],

       function(declare, Memory, Tree) 
           var store = new (declare([Memory, Tree], ))();

           store.add(node:'bob',     id:1, parent:null, hasChildren:true);
           store.add(node:'alice',   id:2, parent:null, hasChildren:true);

           store.add(node:'thesis',  id:3, parent:1,    hasChildren:false);
           store.add(node:'game',    id:4, parent:1,    hasChildren:false);
           store.add(node:'picture', id:5, parent:2,    hasChildren:false);
           store.add(node:'plan',    id:6, parent:2,    hasChildren:false);
           store.add(node:'mail',    id:7, parent:2,    hasChildren:false);

           return store;
       );

还有启动脚本:

require(['dojo/_base/declare',
        'app/dgrid/OnDemandGrid',
        'app/dgrid/Tree',
        'app/astore'], 
        function (declare, OnDemandGrid, Tree, astore) 

            w = new (declare([OnDemandGrid, Tree],))(
                collection: astore,
                columns:[
                    field:'node', label:'Whatever...', renderExpando:true
                ]
            , 'slot');

            w.startup();
        );

显示小部件时数据看起来总是平坦的:

点击“bob”后,该部分被整理出来:

然后我点击“alice”,最后一切看起来都很好:

但是,如果我按列排序,我会再次将整个内容弄乱,比以往任何时候都更糟:

我已经用实验室的示例代码进行了实验,得到了相同的结果。我的 dgrid 组件是通过 Bower 下载的。此问题出现在具有不同操作系统和浏览器的两台不同计算机上。而且我的想法正在枯竭......:S任何意见都非常感谢!

【问题讨论】:

【参考方案1】:

正如 Dylan 和我本人在 github issue 上提出的相同问题所指出的,您需要将一个集合传递给您的网格,该集合仅代表***项目。使用dstore/Tree时,您可以为此调用store.getRootCollection()

所以你想要collection: astore.getRootCollection(),而不是collection: astore

【讨论】:

你好,肯。是的,很抱歉交叉发布,我想我首先想到了错误的地方。当我通过 .getRootCollection 时,我得到的只是一棵树,only 是根项。然而,这是我自己实现的树模型,然后使用标准属性名称 parent / id / hasChildren 进入 Tree store mixin。估计是两个问题搞混了。感谢您的澄清! 如果我不得不大胆猜测,也许您的原始实现没有共同的 root 引用 getRootCollectiongetChildren 为他们的工作引用的原始商店,所以 @ 987654329@ 最终试图从已经过滤的仅限父母的集合中抓取孩子。 dstore/Tree 基本上是 4 个 1 行方法实现,因此很容易用作基础或参考实现。 就是这样。我不认为需要一个实际的私有根元素。这是我今天得到的最有用的信息。欠你的!

以上是关于dgrid 0.4.0 树在用户交互之前看起来很平坦的主要内容,如果未能解决你的问题,请参考以下文章

使用属性树在 boost 中解析 xml

我找不到将数据库源添加到 dgrid 的优雅方法

为什么ESRI-Dojo应用程序构建包括dgrid和dgrid1包

ContentPane 中的 dgrid - 滚动错误

dojo dgrid 中的小部件

带水平滚动的dgrid