Запуск события, когда флажок меню фильтра снят в сеточных фильтрах Ext Js?

#javascript #extjs #extjs4

#javascript #extjs #extjs4

Вопрос:

Я использую плагин gridfilters для отображения моей таблицы. На данный момент я применяю пользовательский удаленный фильтр всякий раз, когда изменяется фильтр меню столбца, вызываемый событием «filterchange». В главном окне просмотра:

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

Всякий раз, когда я заполняю поля меню фильтра, вызывается событие filterchange и применяется фильтр. В то же время, когда поле заполнено, флажок меню для фильтра установлен. Хотя, никакое событие не вызывается (даже 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: ''
        }
    }
 

Ответ №1:

Вы можете получить это событие, используя другие прослушиватели, которые вы можете использовать filteractivate для запуска, когда пользователь активирует (или устанавливает флажок) фильтр, и filterdeactivate когда пользователь деактивирует (или снимает флажок) фильтр

Комментарии:

1. Идеально! Это сделало это!

2. На самом деле, Матеус, событие filteractivate не запускается на панели сетки, когда активируется фильтр меню заголовка столбца… Я снова открываю вопрос в другом месте. Хотя ваш ответ несколько месяцев назад помог мне найти событие filterchange, и это решило мою проблему.