我一直在尝试更新网格的整行,但遇到了问题。我我能够更新单个单元格(如果它没有格式化程序),但我希望能够更新整个行。或者,我可以更新列,但如果它有格式化程序,我就无法使其正常工作。
以下是我用来更新网格的代码:
grid.store.fetch({query : { some_input : o.some_input },
onItem : function (item ) {
dataStore.setValue(item, 'input', '123'); //works!
dataStore.setValue(item, '_item', o); //doesn't work!
}
});
我网格的结构:
structure: [
{ type: "dojox.grid._CheckBoxSelector"},
[[{ name: "Field1", field: "input", width:"25%"}
,{ name: "Field2", field: "another_input", width:"25%"}
,{ name: "Field3", field: "_item", formatter:myFormatter, width:"25%"}
,{ name: "Field4", field: "_item", formatter:myOtherFormatter, width:"25%"}
]]
]
答案 0 :(得分:0)
在'tjo'的#dojo freenode频道中获得了一些信息,他们小心翼翼地拼凑出一个显示正确方法的小提琴,最值得注意的是将idProperty放在memoryStore上并覆盖数据:http://jsfiddle.net/few3k7b8/2/
var memoryStore = new Memory({
data: [{
alienPop: 320000,
humanPop: 56000,
planet: 'Zoron'
}, {
alienPop: 980940,
humanPop: 56052,
planet: 'Gaxula'
}, {
alienPop: 200,
humanPop: 500,
planet: 'Reiutsink'
}],
idProperty: "planet"
});
然后当我们想要更新时:
memoryStore.put(item, {
overwrite: true
});
请记住,物品必须有一个“行星”字段,它应该与我们现有的行星之一相同才能覆盖该行。