0

我在 extjs 4.2 中有以下网格的存储和模式。

    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)

我无法让那些通过

getRemovedRecords()

getNewRecords()

当我将数据加载到商店时

grid.getStore().loadData(ajaxCallResponse).

当我内联数据时它工作正常。

请帮助我了解我做错了什么......

4

3 回答 3

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

首先检查 phantom 是否为真,然后 loadData,并尝试使用 store.getNewRecords(),如果 phantom 为真,则只有记录将存在于 getNewRecords() 中。

于 2017-04-24T11:58:54.393 回答
0

尝试 store.getModifiedRecords() 代替。这将为您提供新的和已编辑的记录。要检查它是否是新记录,只需检查记录“幻影”属性,该属性将等于 true。

此外,如果 getNewRecords() 和 getRemovedRecords() 没有返回任何记录,请在添加/删除记录后尝试 store.sync()。

于 2015-05-26T17:47:21.827 回答
0

向商店添加新记录时,我必须将 phantom 属性设置为 true(如 @Naren Sathya 在先前答案中所建议的那样),以便 getModifiedRecords() 方法实际列出这些新添加的记录:

// 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);
于 2017-05-17T15:56:30.293 回答