1

尝试使用 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非常感谢任何输入!

4

1 回答 1

4

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

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

于 2015-03-06T00:55:42.137 回答