Extjs буферизованный магазин загружает все новые добавленные элементы
Я пытаюсь использовать буферизованную комбинацию Ext (4.1.1) store/grid с данными, к которым я не могу получить доступ напрямую через остальные интерфейсы 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)
}
Поэтому я ожидал, что данные попадут в хранилище, но будут визуализированы только видимые данные. Теперь это так, что все новые данные отображаются.
1 ответ
Я не смог создать рабочий пример с кодом, который вы даете, но у меня есть кое-что близкое... Как вам удалось добавить записи в буферизованное хранилище, поддерживаемое прокси памяти?
Вы должны попытаться отправить ваши новые данные напрямую на прокси, а затем перезагрузить хранилище, например так:
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();
}
});
Посмотрите эту скрипку, которая пытается воспроизвести ваши настройки.