EXT JS.Как загрузить все строки в примере Buffered Scrolling? - PullRequest
3 голосов
/ 24 октября 2011

В этом примере: http://dev.sencha.com/deploy/ext-4.0.2a/examples/grid/buffer-grid.html

Я хотел бы добавить кнопку с заголовком «Читать все», и при ее нажатии все строки должны быть загружены, поэтому больше нет буферизации.

Это полезно, когда пользователь хочет иметь больший контроль над всем содержимым, не дожидаясь завершения буфера в особых случаях.

Спасибо, любая помощь приветствуется

1 Ответ

1 голос
/ 08 сентября 2012

Используйте два хранилища с общей моделью.

Первый - текущий (с буферизацией, поиском и т. Д.).Второе - обычное хранилище, без буферизации, подкачки и т. Д. Когда вы нажимаете «Читать все», просто загружаете все записи во второе хранилище и обновляете первое новыми данными.

Вот пример:

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 будет разный источник для извлечения каждой записи.

...