#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, и это решило мою проблему.