0

Ext の(4.1.1)バッファリングされたストア/グリッドの組み合わせをデータと使用しようとしていますが、これには残りの 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 に答える