0

我正在尝试将 Ext 的(4.1.1)缓冲存储/网格组合与数据一起使用,我无法通过 rest Api 直接访问这些数据.. 左右,但传入的数据由我的控制器处理,只想将此数据添加到缓冲网格。

问题来了,当我将 500 个项目直接加载到商店时,缓冲正在工作.. 只有我能看到的项目才会被渲染,但是当我开始时,store.add(items)它们都会自动渲染..

所以这是我的商店和网格:

店铺

this.store = Ext.create('Ext.data.ArrayStore', {
    storeId: 'reportDataStore',
    fields: [
        { name: 'html'}
    ],
    buffered: true,
    pageSize: 100,
    autoLoad: true
});

网格

  {
      xtype: 'gridpanel',
      flex: 1,
      hideHeaders: true,
      store: this.store,
      verticalScroller: {
          rowHeight: 43
      },
      disableSelection: true,
      columns: [
          { header: '', dataIndex: 'html', flex: 1 }
      ]
  }

数据控制器

...
// somewhere in initialization process of the controller, 
// I take the reportDataStore, for later reusing
    this.reportDataStore = Ext.getStore('reportDataStore');
...
onNewData: function(data) {
    this.reportDataStore.add(data)
}

所以我的期望是,数据将进入商店,但只有可见数据会被渲染。现在是这样,所有新数据都会被渲染。

4

1 回答 1

2

我无法使用您提供的代码生成一个工作示例,但我有一些接近的东西......您甚至是如何设法将记录添加到由内存代理支持的缓冲存储中?

您应该尝试将新数据直接推送到代理,然后重新加载存储,如下所示:

store.proxy.data.push(data);

grid.view.saveScrollState();

// should probably have been a call to reload(), but then the loading never ends...
store.load({
    callback: function() {
        grid.view.restoreScrollState();
    }
});

请参阅此尝试重现您的设置的小提琴。

于 2015-10-06T19:26:08.060 回答