Pagination Ext JS 4:将存储与其分页内存代理同步

Pagination Ext JS 4:将存储与其分页内存代理同步,pagination,extjs4,store,Pagination,Extjs4,Store,我正在尝试创建一个网格,该网格在ExtJS4.0.7中有一个带有PagingMemoryProxy的存储。我希望能够编辑商店中的信息,但我发现如果我编辑信息并转到下一页,我会丢失上一页上编辑的信息。我的代码如下 Ext.Loader.setConfig({ enabled: true }); Ext.Loader.setPath('Ext.ux', 'examples/ux'); Ext.require('Ext.ux.data.PagingMemoryProxy'); Ext.onR

我正在尝试创建一个网格,该网格在ExtJS4.0.7中有一个带有PagingMemoryProxy的存储。我希望能够编辑商店中的信息,但我发现如果我编辑信息并转到下一页,我会丢失上一页上编辑的信息。我的代码如下

Ext.Loader.setConfig({
  enabled: true
});

Ext.Loader.setPath('Ext.ux', 'examples/ux');

Ext.require('Ext.ux.data.PagingMemoryProxy');

Ext.onReady(function() {
  var data = [
    {name: 'jack johnson', text: 'record1'},
    {name: 'jack johnson', text: 'record2'},
    {name: 'jack johnson', text: 'record3'},
    {name: 'jack johnson', text: 'record4'}
  ];

  var store = Ext.create('Ext.data.Store', {
    fields: ['name', 'text'],
    data: data,
    proxy: {
      type: 'pagingmemory'
    },
    pageSize: 2
  });

  var grid = Ext.create('Ext.grid.Panel', {
    store: store,
    region: 'center',
    id: 'thegrid',
    plugins: [{
      ptype: 'cellediting',
      clicksToEdit: 1,
      listeners: {
        edit: function(editor, e) {
          //e.record.commit();
        }
      }
    }],
    columns: [{
      text: 'Name',
      dataIndex: 'name',
      editor: {
        allowBlank: false
      }
    }, {
      text: 'Text',
      dataIndex: 'text'
    }],
    dockedItems: [{
      xtype: 'pagingtoolbar',
      store: store,
      dock: 'bottom',
      displayInfo: true
    }],
  });

  Ext.create('Ext.Viewport', {
    layout: 'border',
    items: [grid]
  });
});
我想知道如何将我商店的数据与代理的数据同步,因为商店的数据实际上包含记录,而代理的数据包含记录的数据,因此不可能在代理中按id找到记录。我决定尝试一下同步方法

使用同步方法后,似乎什么也没发生,所以我想我应该提交记录。。。因此,注释掉了
e.record.commit
code。当这没有起到任何作用时,我开始在Firebug中挖掘,并最终在ext all的第44600行看到调试
me.getNewRecords
code。这最终导致我只返回未提交的记录(因为它显然检查了记录的phantom属性),因此,我编辑的任何记录都不会包含在第44600行的
toCreate
变量中

当我取出e.record.commit时,toCreate变量现在包含已编辑的记录,但这些都无助于解决我的问题。。。只是初步的摸索和我的发现

所以我的问题是,如何将存储与PagingMemoryProxy同步?可能吗?如果是,我该怎么办


任何帮助都将不胜感激

通过循环我最终添加到PagingMemoryProxy的JSON数据解决了这个问题。。。基本上,JSON中的每个记录都添加了一个“索引”值,因此当我想要编辑存储中的记录时,我可以使用这个索引值轻松地索引到它的PagingMemoryProxy中。简单的修复。

我确实发现有人提到使用两个商店,但我觉得这有点浪费。。。