Используйте два хранилища с общей моделью.
Первый - текущий (с буферизацией, поиском и т. Д.).Второе - обычное хранилище, без буферизации, подкачки и т. Д. Когда вы нажимаете «Читать все», просто загружаете все записи во второе хранилище и обновляете первое новыми данными.
Вот пример:
Ext.create ('Ext.grid.Panel', {
renderTo: Ext.getBody () ,
width: 300 ,
height: 300 ,
store: bufferingStore ,
columns: [ ... ] ,
tbar: {
items: [{
xtype: 'button' ,
text: 'Read all' ,
handler: function (btn) {
// Here's the call to retrieve all records
// Also you can do it with 'autoLoad: true' param
normalStore.load ();
// Then, flush the bufferingStore, currently use by the grid
bufferingStore.removeAll ();
// Populate bufferingStore with normalStore
normalStore.each (function (record) {
bufferingStore.add (record);
});
}
}]
}
});
У NormalStore и bufferingStore одинаковая модель, но у NormalStore будет разный источник для извлечения каждой записи.