0

在 dojo 1.7.2 中,如果我创建一个包含数组值的数据存储,dojox.grid.DataGrid 将毫无问题地显示它们,并用逗号分隔每个项目。

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

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

谢谢 !

4

2 回答 2

1

显然问题来自 ItemFileReadStore 而不是来自网格。我修改了 1.6 的代码以使用 ObjectStore 和 MemoryStore 代替,它工作。

http://jsfiddle.net/psoares/HbFNY/16/

于 2012-05-07T14:53:54.170 回答
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 允许使用多级数据存储

于 2012-05-08T06:08:59.163 回答