extjs中的grid負責資料的顯示,store則負責資料的處理,store.data.item[].dirty 則標示該record是否有被更改過,可以由store.getModifiedRecords()來讀取被更改過的資料(不包含被刪除的資料)。
var m = store.getModifiedRecords(); var jsonArray = []; Ext.each(m, function(item) { jsonArray.push(item.data); }); alert(Ext.encode(jsonArray));
有看到有人直接存取modified,沒有trace過,不過感覺應該透過Interface來存取比較妥當。
var m = store.modified.slice(0); var jsonArray = []; Ext.each(m, function(item) { jsonArray.push(item.data); }); alert(Ext.encode(jsonArray));
至於remove/delete則必須自己處理,每次在執行delete之前就先儲存在某個地方(我都存在store.deleted)。
var records = grid.getSelectionModel().getSelections(); for (i = 0; i < records.length; i++) { store.deleted.push(records[i]); store.remove(records[i]); }
Add則只需要將record插入store中即可。
/* Generate a constructor for a specific Record layout */ var R = Ext.data.Record.create({ {name: 'name'}, {name: 'tel'}, {name: 'addr'} }); var r = new R({ name: 'Brook', tel: '0921', addr: 'tw' }); grid.stopEditing(); store.insert(0, r); grid.startEditing(0, 0);
沒有留言:
張貼留言