2015-04-23 67 views
0

我一直在嘗試更新我的網格的整個行,但有問題。我am能夠更新單個單元格(如果它沒有格式化程序),但我希望能夠更新整個行。或者,我可以更新該列,但如果它具有格式化程序,則無法使其工作。更新整個dojox.grid.datagrid行

下面是我使用更新網格代碼:

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

得到了在從'#dojo freenode的信道的一些信息tk'誰善意地把小提琴放在一起,顯示正確的方法來做到這一點,最值得注意的是把idProperty放在記憶庫和覆蓋數據: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 
    }); 

記住,項目必須有一個字段「地球」,它應該是同我們現有的行星之一,以覆蓋該行。