ExtJS:使用gridpanel过滤器标题忽略/重置我添加的商店过滤器

时间:2015-09-22 15:47:01

标签: javascript extjs extjs4 extjs4.2 extjs5

我正在加载我的商店和网格面板并指定一个类似的过滤器

myGrid.store.filter('enabled', 'true');

这是为了过滤掉未启用的记录。这有效,我的gridpanel最初显示所有启用的记录等于true。然后,当我使用gridpanel标头应用过滤器并搜索我知道已启用设置为false的记录时,会出现。

初始分配store.filter(....)后的初始网格面板列表会删除所有未启用等于true的记录,但使用标题进行过滤会将其包含在新过滤器中。

我按照这里的文档: http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.ux.grid.FiltersFeature

所以我有这样的事情:

 Ext.apply(me, {
        width: 500,
        height: 250,
        store: 'BlockItems',
        features: [{
            ftype: 'filters',
            local: true,

从标题中删除过滤器后,我再次列入我的列表,但现在它包含enabled != trueenabled == true的记录,即所有记录。

我很困惑。我已经过滤了我的商店,为什么网格“标题过滤器”不符合我最初添加的过滤器?

1 个答案:

答案 0 :(得分:1)

这是设计的。如果您使用列过滤器,它会从商店中删除所有其他过滤器,因为它无法知道您是否要保留它们。

你有三种可能性。最彻底的是如果您不打算显示已禁用的记录,则只在商店中启用已启用的记录。

如果你不想这样做,你可以听取filterchange事件并在每次filterchange之后添加启用的过滤器(检查它是否已经添加,否则你得到一个无限循环),或者你可以重新定义每个列过滤器应如何工作,以便它们满足您的特殊需求:

http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.ux.grid.FiltersFeature-cfg-filters