Javascript 正在更新整个dojox.grid.datagrid行

Javascript 正在更新整个dojox.grid.datagrid行,javascript,datagrid,dojo,grid,Javascript,Datagrid,Dojo,Grid,我一直在尝试更新我的网格的整行,但有问题。如果没有格式化程序,我可以更新单个单元格,但我希望能够更新整行。或者,我可以更新该列,但如果它有格式化程序,我就无法让它工作 下面是我用来更新网格的代码: grid.store.fetch({query : { some_input : o.some_input }, onItem : function (item ) { dataStore.setValue(item, 'input', '123'); //works!

我一直在尝试更新我的网格的整行,但有问题。如果没有格式化程序,我可以更新单个单元格,但我希望能够更新整行。或者,我可以更新该列,但如果它有格式化程序,我就无法让它工作

下面是我用来更新网格的代码:

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%"}
    ]]
]

从“tk”获得dojo freenode频道中的一些信息,tk好心地整理了一把小提琴,展示了正确的方法,最值得注意的是在memoryStore上放置了一个idProperty并覆盖了数据:

然后,当我们要更新时:

    memoryStore.put(item, {
        overwrite: true
    });
请记住,项目必须有一个字段“行星”,并且它应该与我们现有的行星之一相同,以便覆盖该行

    memoryStore.put(item, {
        overwrite: true
    });