2009年7月20日 星期一

Ext.data.Store之資料修改(add/modify/remove)


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


沒有留言:

張貼留言

熱門文章