在Ext Js网格过滤器中取消选中过滤器菜单的复选框时触发事件?

问题描述 投票:0回答:1

我一直在使用gridfilters插件来显示我的表格。目前,每当列菜单的过滤器发生更改时,我都会应用自定义远程过滤器,由“filterchange”事件触发。在主ViewPort上:

xtype: 'gridpanel',
        title: 'Autopilot Monitor',
        titleAlign: 'center',
        store: 'AutopilotQueueStore',
        id: 'grid',
        plugins: 'gridfilters',
        maxRows: 20,
        selModel: {
            selType: 'cellmodel',
            mode: 'SINGLE'
        },
        listeners: {
            filterchange: 'onFilterChange'
        },

每当我填充过滤器的菜单字段时,都会调用filterchange事件并应用过滤器。同时,填充字段时,将检查过滤器的菜单复选框。虽然,当我取消选中过滤器菜单复选框时,不会调用任何事件(甚至不会过滤更改)。

每当复选框的状态发生变化(选中或取消选中)时,我都需要捕获要调用的事件。我怎么能设法做到这一点?我的控制器:

onFilterChange: function (store, filters, e) {
    console.log(checkbox);
    var store = Ext.getStore('AutopilotQueueStore');
    var cmp = Ext.getCmp('id');
    Ext.override(Ext.grid.filters.Filters, { filterCls: Ext.baseCSSPrefix });
    store.clearFilter();
    var filter = filters[0];
    var txt = ""
    Ext.getCmp('filterTextField').setValue("");
    if (filter != undefined) {
        store.getProxy().extraParams = {
            filterColumn: filter.getValue() + "," + filter.getProperty(),
            filter: ''
        }
    }
    else {
        store.getProxy().extraParams = {
            filterColumn: txt,
            filter: ''
        }
    }
javascript extjs extjs4
1个回答
0
投票

你可以使用其他监听器来获取此事件,当用户激活(或选中复选框)过滤器时可以使用filteractivate,当用户取消激活(或取消选中复选框)过滤器时可以使用filterdeactivate

© www.soinside.com 2019 - 2024. All rights reserved.