【问题标题】:Deleted/Modified/Added records from extjs store从 extjs 存储中删除/修改/添加记录
【发布时间】:2015-05-26 13:11:05
【问题描述】:

我在 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).

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

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

【问题讨论】:

    标签: extjs4.2 extjs-mvc extjs-grid extjs-stores


    【解决方案1】:
    if(record.phantom  != true){
      record.phantom  = true;
    }
    store.loadData(record);
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • Hi..thanks for d response...getModifiedRecords() 始终返回存储中的所有记录,并且所有记录的 phanthom 为 false。在添加或修改之后,甚至在第一次从 extjs ajax 调用将数据加载到存储之后,也尝试了同步。但是 getNewRecords() 和 getRemovedRecords() 始终为空。。
      【解决方案3】:

      向商店添加新记录时,我必须将 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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-22
        • 1970-01-01
        • 2011-12-03
        相关资源
        最近更新 更多