Я использовал плагин 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: ''
}
}