Extjs 4.2.1 Локальная фильтрация панели Grid с подкачкой - PullRequest
0 голосов
/ 05 декабря 2018

Здесь можно разобраться с проблемой https://fiddle.sencha.com/#view/editor&fiddle/2o8q

В сети есть много методов о том, как локально фильтровать панель сетки, у которой есть подкачка, но никто не работает для меня.У меня есть следующая сетка

var grid = Ext.create('Ext.grid.GridPanel', {                     
                store: store, 
                bbar: pagingToolbar,
                columns: [getColumns()],
                features: [{
                    ftype: 'filters',
                    local: true,
                    filters: [getFilters()],
                }],
          }

Фильтры здесь имеют форму (просто скопируйте вставленную часть моего объекта фильтров)

    {
        type: 'string',
        dataIndex: 'name',
        active: false
    }, {
        type: 'numeric',
        dataIndex: 'id',
        active: false
    },

Хранилище выглядит следующим образом

var store = Ext.create('Ext.data.Store', {
                    model: 'Store',
                    autoLoad: true,
                    proxy: {
                        data: myData,
                        enablePaging: true,
                        type: 'memory',
                        reader: {
                            type: 'array',
                        }
                    },
                });

Здесь myData - приходит ко мне в виде

["1245", "Joen", "Devis", "user", "", "email@com", "15/6/2017"],

["9876", "Alex", "Klex", "user", "", "email@com", "15/6/2017"],[...

Также у меня есть pagingToolbar

 var pagingToolbar = Ext.create('Ext.PagingToolbar', {
                    store: store, displayInfo: true
                });

Так что все элементы используютмагазин я объявил в топе.У меня 25 элементов на странице сетки и около 43 элементов в myData.Так что теперь у меня есть 2 страницы в моей сетке.Когда я нахожусь на первой странице сетки и применяю строковый фильтр для имени, например, он фильтрует первую страницу (25 элементов), когда я перехожу на 2d страницу, сетка также фильтруется, но в рамках второй страницы.В результате каждая страница фильтруется отдельно.Мне нужно фильтровать ВСЕ страницы одновременно, когда я проверяю флажок фильтра, и соответственно обновлять информацию pagingToolbar.Что я делаю не так?

1 Ответ

0 голосов
/ 30 июля 2019

Почти уверен, что это поздний ответ, но я нашел решение фильтра локального хранилища для сетки пейджинга, которое вы, вероятно, ищете:

https://fiddle.sencha.com/#fiddle/2jgl

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

В общем:

  1. создать пустое хранилище со следующими обязательными параметрами
....
    proxy: {
        type: 'memory',
        enablePaging: true,
        ....
    },
    pageSize: 10,
    remoteFilter: true,
....

затем загрузить данные в хранилище, используя его прокси вместо метода loadData
store.getProxy().data = myData;
store.reload()
применить фильтр, чтобы увидеть результат
store.filter([{ property: 'name', value: 'Bob' }]);

Подробнее см. Конфигурацию магазина President.js в предоставленном примере скрипта.

Надеюсь, это поможет

...