2015-05-26 76 views
0

Im有extjs 4.2中的網格下面的商店和模式。刪除/修改/添加記錄從extjs商店

Ext.define('myapp.store.myStore',{ 
extends:'Ext.data.Store', 
modal:'myapp.modal.myModal', 
storeId:'myGridStore', 
data:[],//used this only when trying inline data 
proxy: { 
type:'memory', 
reader:{ 
type:'json', 
} 
} 

}); 
Ext.define('myapp.modal.myModal',{ 
extends:'Ext.data.Modal', 
fields:['bla','blha'] 
}); 

映射到網格,商店和模式看起來很好,數據填充正確加載到網格中。

問題是,當有修改店裏像

grid.getStore().removeAt(rowIndex) 

grid.getStore().add(record) 

IM無法得到那些通過

getRemovedRecords() 

getNewRecords() 

當我將數據加載到店與

grid.getStore().loadData(ajaxCallResponse). 

它工作正常,當我給數據內嵌。

請幫助我瞭解什麼即時做錯了......

回答

0

嘗試store.getModifiedRecords()代替。這將爲您帶來新的和編輯過的記錄。要檢查它是否有新記錄,只需檢查記錄「幻影」屬性即可。

另外,如果getNewRecords()和getRemovedRecords()不返回任何記錄,請在添加/刪除記錄後嘗試store.sync()。

+0

嗨..感謝您的迴應... getModifiedRecords()總是返回存儲中的所有記錄,並且所有記錄的phanthom都是false。在添加或修改後嘗試同步,甚至在第一次將數據從extjs ajax call..but載入商店後getNewRecords()和getRemovedRecords()始終爲空。 – CARTIC

1
if(record.phantom != true){ 
    record.phantom = true; 
} 
store.loadData(record); 

檢查幻象是真的第一次那麼loadData,並嘗試使用store.getNewRecords(),如果幻象是真實的,只有記錄將在那裏在getNewRecords()。

0

向商店添加新記錄時,爲了使getModifiedRecords()方法實際列出這些新添加的記錄,必須將phantom屬性設置爲true(正如@Naren Sathya在先前回答中所建議的那樣):

// Create a new default record 
var newServerConfig = new App.model.mConfigServer({ 
    id: idForNewRecord, 
    server: 'server', 
    port: 8443, 
    username: 'user', 
    password: '' 
}); 

/* Setting the phantom property to 'true' will ensure this record will be listed 
* when trying to retrieve those new records with store.getModifiedRecords() later on 
*/ 
newServerConfig.phantom = true; 

// Add it to the store 
storeServers.add(newServerConfig);