для чекбокса вы определяете 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, время: 18:57. |