Как сбросить все фильтры в сетках Extjs?

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

ie. Это прекрасно работает :

grid.store.clearFilter();

но рендеринг заголовка все неправильно. Мне нужно попасть во все объекты меню и снять флажки.

Я теряюсь. Я уверен, что это дает мне filterItems :

var filterItems = grid.filters.filters.items;

и из каждого из этих элементов фильтра, я могу добраться до меню как Итак:

var menuItems = filter.menu.items;

но это все, что я могу получить. Я ожидаю какой-то объект checkbox внутри пунктов меню, а затем я могу снять этот флажок, и, надеюсь, рендеринг заголовка затем изменится.

обновление :

теперь у меня есть этот код. Фильтр хранилища сетки очищен. Затем я получаю filterItems от решетки.фильтры.фильтры.предметы и повторите их. Затем я вызываю функцию в каждом из меню предметы.

    grid.store.clearFilter();

    var filterItems = grid.filters.filters.items;

    for (var i = 0; i<filterItems.length; i++){

        var filter = filterItems[i];

        filter.menu.items.each(function(checkbox) {

            if (checkbox.setChecked)
                checkbox.setChecked(false, true);
        });
    }

флажки действительно вызываются, но все равно ничего не происходит : (

2 ответов


попробуйте этот код:

grid.filters.clearFilters();

Это должно заботиться как о сетке, так и о ее базовом хранилище.

когда вы

 grid.store.clearFilter();

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

grid.filters.clearFilters();

надеюсь, что это помогает!

Ура!


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

Итак, это мое добавление вашего решения:

  grid.filters.clearFilters();

    var filterItems = grid.filters.filters.items;

    for (var i = 0; i<filterItems.length; i++){

        var filter = filterItems[i];

        filter.menu.items.each(function(element) {

            if (element.setChecked) {
                element.setChecked(false, true);
            }

            if(typeof element.getValue !== "undefined" && element.getValue() !== "") {
                element.setValue("");
            }                    
        });
    }