Extjs6 Excel 喜欢带存储的网格过滤器

Extjs6 Excel like grid filters with store

我正在尝试为网格创建一个复杂的过滤器。我想要以下一般行为:

此外,网格有一个按钮,可以清除所有过滤器等等,从过滤器中删除选中的项目。

基于此link I've tried to do something similar. I've created also a fiddle

关于fiddle,我有一些问题:

1.The 以下代码 returns undefined。根据文档,它应该 return 一个 Menu 对象。

business.filter.menu = business.filter.createMenu({
        store: localStore
})

2.I 想要在用户按下 Clear Inline Filter 按钮时清除选中的项目。

    var f = Ext.ComponentQuery.query('test-grid')[0].getColumnManager().getHeaderByDataIndex(element).filter;
    if (f.menu) {
        for (var j = 0; j < f.menu.items.length; j++) {
            f.menu.items.items[j].setChecked(false)
        }
    }

此处,f.menu 始终未定义,因此我无法清除该复选框。不知怎么的,我失去了对菜单的引用。

如何根据我的场景清除复选框?为什么 createMenu return 未定义?

编辑

接受的答案适用于这个特定问题(fiddle)

一般说明: 不要调用文档中明确标记为私有的 methods/use 属性。 这通常意味着你做某事的方式是错误的,还有另一种更自动化的方式来实现这一点。 尤其不要采用 Ext4 示例并将它们 1:1 移植到 Ext5 或 Ext6。 该框架在 Ext5 中发生了很大变化,在 Ext6 中发生了更多变化。

在这种情况下,过滤器菜单应该是在没有人工交互的情况下从过滤器存储自动创建的。 要取消选中菜单项,只需停止按该值过滤即可。

使用 ColumnManager 查找特定列也保留供内部使用,但我明白您为什么要那样做。这比手动过滤响应表单 getColumns 更容易。