如何使用gridfilters插件并以编程方式清除/设置过滤器?

时间:2014-09-22 13:33:18

标签: extjs extjs5

在我的应用程序(ExtJS 5.0.1)中,我尝试使用带有自定义/硬编码fiters的gridfilters插件和快捷按钮(以及树中)的网格。

我能够部分模仿设备并清除过滤器,但我遇到了以下问题:

1-当我通过grid.filters.store.addFilter(..)设置过滤器时,列标题的样式不会更改为粗体,并且网格过滤器复选框保持未选中状态。

2-与1相同但反转...首先我在列上设置过滤器,当我清除过滤器时,列保持粗体,但在这种情况下,复选框被清除(应该如此)。

3-当我使用摘要功能'有时'总数未更新

所以,我的问题是: 有没有一种正确的方法来编程设置/清除模仿gridfilter插件的过滤器?

我已经设置了一个最小的小提琴来模拟这个。

https://fiddle.sencha.com/#fiddle/akh

最诚挚的问候, Ricardo Seixas

4 个答案:

答案 0 :(得分:4)

只需在列上使用过滤器实例:

var column = grid.columnManager.getColumns()[0];
column.filter.setValue('J');
column.filter.enable();

工作样本:http://jsfiddle.net/3be0s3d8/7/

答案 1 :(得分:1)

对于列表过滤器,使用以下覆盖来启用setValue方法:

//Enable setting filter values in list filters
Ext.define('Ext.ux.fixed.ListFilter', {
    override: 'Ext.grid.filters.filter.List',
    setValue: function(values) {
        var me = this, len = values.length;
        if(!values) {
            me.callParent();
            return;
        }
        if(!me.menu){
            me.createMenu();
        }
        me.filter.setValue(values);

        if (len && me.active) {
            me.updateStoreFilter(me.filter);
        } else {
            me.setActive(!!len);
        }        
    }
});

答案 2 :(得分:0)

您可以直接更改GridFilter.css文件中的样式:

<link rel="stylesheet" type="text/css" href="js/lib/ext-4.2.1.883/ux/grid/css/GridFilters.css" />

通过更改此元素:

.ux-filtered-column {
    font-style: italic;
    font-weight: bold;
    background: #56b8ff;
}

希望这有帮助。

答案 3 :(得分:0)

在最新版本(5.1)中,Ext的ChainedStore对我来说效果很好。