Я использую :
Ext.ux.grid.FiltersFeature
Он отлично работает, но всякий раз, когда я загружаю данные своего магазина
tablePanel.store.loadData(..)
фильтры не соблюдаются. Столбцы визуально выбираются как отфильтрованные (т. е. выделенные серым цветом), но отображаются все строки вместо отфильтрованного подмножества строк.
Вот ошибка, обнаруженная в JSFiddle:
http://jsfiddle.net/oliverwatkins/7hbt79bj/4/
Чтобы воспроизвести мою проблему:
- Выберите фильтр столбца по имени, чтобы значение «foo»
- Теперь должна отображаться только одна строка (строка foo)
- Теперь нажмите «Сброс».
- Фильтр настроен на отображение только «foo», но также показывает «bar».
Я знаю, что есть метод, который удаляет фильтры:
grid.store.clearFilter();
Я ищу такой метод:
grid.store.applyFilters();
Поэтому я могу выполнить его после обновления данных в своей таблице.
** ОБНОВЛЕНИЕ **
Если я копну немного глубже, я увижу, что на панели таблицы устанавливается строка фильтра.
tablePanel --> фильтры --> фильтры --> элементы --> [1] --> inputItem --> value = 'mySearchString'
Однако это фильтры на tablePanel. Если вместо этого я посмотрю на tablePanel-->store, я найду фильтры без установленных элементов:
tablePanel --> store --> фильтры --> фильтры --> элементы --> [0]
Создается впечатление, что здесь задействованы две разные системы фильтрации, которые не взаимодействуют друг с другом.
Еще больше бесит то, что в store есть метод filter, а в grid нет метода filter.
grid.store.filter(); //method exists
grid.filter(); //crashes
озадачивает..