dojo 1.6 DataGrid无法显示列表?

时间:2012-05-07 14:27:53

标签: dojo dojox.grid.datagrid

在dojo 1.7.2中,如果我创建一个包含数组值的数据存储,dojox.grid.DataGrid会显示它们没有问题,用昏迷分隔每个项目。

但是,在dojo 1.6中,它只需要我的数组的第一个元素。我有一个项目,我必须使用1.6版本。在该版本中是否有针对此的解决方法?

为了说明问题,这里有两个例子:

谢谢!

2 个答案:

答案 0 :(得分:1)

显然问题来自ItemFileReadStore而不是来自网格。 我修改了我的1.6代码,改为使用ObjectStore和MemoryStore,并且工作正常。

请参阅http://jsfiddle.net/psoares/HbFNY/16/

答案 1 :(得分:0)

这是一个缺陷,但它不是..你的JSON的构造不太正确,因为任何值都不允许作为数组,除非它是childAttrs之一。由于[1,2,3] .toString()的性质,这就是您将值设置为数组的尝试被认为有效的原因。

ItemFileReadStore中的get / set使用其项目:

store._arrayOfAllItems = {
 value1 : { values : [ 'realvalue' ] },
 value2 : { values : [ 'realvalue' ] }
};
然后吸气者说

store.get = function(itemById, val) { return itemById[val][0]; } 
   // why only the first arrayslot is pulled from store---/^

在你的JSON构造中,禁止你如何设置值?

   var data = {
        id: 'id',
        label: 'id',
        items: [
            {
            id: "value1",
            values: "a,b,c"   // permit-able string value
        },
        {
            id: "value2",
            values: "foo"}
        ]
    };

如果您想要一个ID的相同键的多个值,那么您必须将这些数据作为子项传递并处理它们,例如;

    data: {
        id: 'id',
        label: 'id',
        childrenAttrs: [ 'items', 'children'], // << default behavior
        items: [ {
            id: "value1",
            children: [
              { id: "value1_1", values: 'a' },
              { id: "value1_2", values: 'b' },
              { id: "value1_3", values: 'c' }
            ]
        }, {
            id: "value2",
            values: "foo"
        } ]
    }

但是,只有dojox.grid.TreeGrid允许使用multi-lvl数据存储