如何重置Extjs网格中的所有过滤器?

Oli*_*ins 7 extjs

如何在网格中重置ExtJS过滤器.更具体地说,如何获取标题以兑现对过滤的更改.

即.这很好用:

grid.store.clearFilter();
Run Code Online (Sandbox Code Playgroud)

但是标题呈现都是错误的.我需要进入所有菜单对象并取消选中复选框.

我很迷茫.我很确定这给了我filterItems:

var filterItems = grid.filters.filters.items;
Run Code Online (Sandbox Code Playgroud)

从这些过滤器项目中,我可以获得如下菜单项:

var menuItems = filter.menu.items;
Run Code Online (Sandbox Code Playgroud)

但这就是我能得到的.我期待菜单项中的某种复选框对象,然后我可以取消选中该复选框,希望然后标题呈现会发生变化.

更新:

我现在有这个代码.网格存储已清除其筛选器.接下来,我从grid.filters.filters.items获取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);
        });
    }
Run Code Online (Sandbox Code Playgroud)

复选框被调用,但仍然没有发生任何事情:(

小智 15

试试这段代码:

grid.filters.clearFilters();
Run Code Online (Sandbox Code Playgroud)

这应该处理网格及其底层存储.

当你这样做

 grid.store.clearFilter();
Run Code Online (Sandbox Code Playgroud)

它只能清除商店中的过滤器,但网格的视图不会通过该调用进行更新.因此,要自动处理网格视图以及网格存储,只需使用即可

grid.filters.clearFilters();
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!

干杯!

  • 在我的情况下 grid.filters 是未定义的!帮我换个选择。我的 Ext 版本是 6.5.1 (2认同)