在dojo 1.7.2中,如果我创建一个包含数组值的数据存储,dojox.grid.DataGrid会显示它们没有问题,用昏迷分隔每个项目。
但是,在dojo 1.6中,它只需要我的数组的第一个元素。我有一个项目,我必须使用1.6版本。在该版本中是否有针对此的解决方法?
为了说明问题,这里有两个例子:
谢谢!
答案 0 :(得分:1)
显然问题来自ItemFileReadStore而不是来自网格。 我修改了我的1.6代码,改为使用ObjectStore和MemoryStore,并且工作正常。
答案 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数据存储