для чекбокса вы определяете handler. В нём можно использовать два параметра checkbox и checked.
handler: function(checkbox, checked) { ... } Дальше нужно найти компонент грида извлечь из него стор при помощи getStore() и отфильтровать записи. Накидал примерчик в Fiddle. Ext.application({ name : 'Fiddle', launch : function() { Ext.create('Ext.container.Container', { renderTo: Ext.getBody(), width: 300, layout: { type: 'vbox', align: 'stretch' }, itemId: 'myContainer', items: [ { xtype: 'grid', itemId: 'myGrid', flex: 1, store: Ext.create('Ext.data.Store', { fields: [ { name: 'education', type: 'string' } ], data: [ { education: 'Высшее' }, { education: 'Среднее' } ] }), //plugins: 'gridfilters', columns: [ { header: 'Образование', dataIndex: 'education', flex: 1//, //filter: { // type: 'list' //} } ] }, { xtype: 'checkboxgroup', flex: 1, fieldLabel: 'Образование', items: [ { xtype: 'checkbox', boxLabel: 'Среднее', handler: function(checkbox, checked) { var grid = checkbox.up('#myContainer').down('#myGrid'); var store = grid.getStore(); if (checked) { store.filterBy(function(record) { return record.get('education') === checkbox.initialConfig.boxLabel; }); } else { store.clearFilter(); } } } ] } ] }); } }); Либо используйте плагин gridfilters - пример. |
проблема в том, что данные в grid подтягиваются c БД
они формируются с помощью php а еще мне же нужно учесть, что могут быть выбраны сразу несколько чекбоксов |
могу выслать код формирования базы
|
по-моему, при старте приложения вам нужно запросить у веб-сервера списки уникальных значений в полях "Город" и "Образование", затем динамически сформировать набор чекбоксов для каждого поля. Когда пользователь щёлкнет по чекбоксу, не нужно фильтровать стор грида методом filterBy. Нужно заставить стор обновиться через метод load и передать на сервер все значения чекбоксов.
myGrid.getStore().load({ params: { city: ['Витебск', 'Могилёв'], education: ['Высшее'] } } }); Для сбора значений фильтра лучше назначить один обработчик в контроллере для всех чекбоксов, навесив его на событие change. Если будет проблематично настроить proxy для стора Users, можно подгружать данные через Ext.Ajax.request() и затем отправлять их в стор через store.loadData(myData). Какую версию ExtJs вы используете? Как у вас настроен store таблицы? |
Часовой пояс GMT +3, время: 08:51. |