更新整个dojox.grid.datagrid行

时间:2015-04-23 18:32:07

标签: javascript datagrid dojo grid

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

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

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

1 个答案:

答案 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
    });

请记住,物品必须有一个“行星”字段,它应该与我们现有的行星之一相同才能覆盖该行。