Extjs Grid Panel Filter - очистить фильтры только в одном столбце

Этот вопрос (EXTjs gridfilter: как очистить фильтр без перезагрузки магазина?) показано, как очистить все фильтры по всей сетке.

Есть ли способ очистить только фильтры в определенном столбце? Например, если у меня есть столбец с фильтром списка, который имеет 20 параметров, и я выбираю 8 из них, мне нужна кнопка, которая снимет все эти флажки, но оставит любые другие фильтры, которые я выбрал, чтобы они оставались в силе.

Столбец «размер» в этой демонстрации — хороший пример того, как выглядит фильтрация: http://dev.sencha.com/deploy/ext-4.0.0/examples/grid-filtering/grid-filter-local.html


person emilyk    schedule 17.07.2013    source источник


Ответы (1)


Вы можете сделать это с помощью setActive метод фильтра.

А вот как можно получить ссылку на этот фильтр:

// FiltersFeature adds a filters property to the grid it is bound to
grid.filters.getFilter('size').setActive(false)

Изменить: как снять все флажки

var filter = grid.filters.getFilter('size');
filter.menu.items.each(function(checkbox) {
    // The second argument suppress the check event in order to prevent
    // unexpected behaviour, like the filter reenabling itself and trying
    // to update the store several times in a row
    checkbox.setChecked(false, true);
});
person rixo    schedule 17.07.2013
comment
Спасибо! Это прекрасно работает. Знаете ли вы, как сделать так, чтобы отмеченные флажки на самом деле отображались как неотмеченные. Функциональность есть, просто она не отображается на реальных коробках. Если вы перейдете к выбору нового фильтра, вам все равно придется снять все эти флажки. - person emilyk; 18.07.2013
comment
Боюсь, для этого ничего не предусмотрено. Я добавил код, чтобы показать вам, как это можно сделать в моем ответе. - person rixo; 18.07.2013
comment
Здорово! Спасибо. Работает как шарм! - person emilyk; 18.07.2013