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);

沒有留言:
張貼留言