Программно манипулировать ListFilter в ExtJS 4.2
Я использую много FiltersFeatures в моей сетке (ListFilter,DateFilter,StringFilter и т. Д.), Я не могу найти, как управлять этими фильтрами. Я хотел бы иметь возможность "выбирать" значения в списке, не заставляя пользователя войти в меню и щелкнуть по нему.
По приведенным ниже комментариям я не могу получить доступ к самому фильтру...
grid.$className
"Ext.grid.Panel"
grid.filters.$className
"Ext.ux.grid.FiltersFeature"
grid.filters.getFilter("status")
undefined
Мой конфиг для моей сетки и столбцов
var filtersCfg = {
ftype: 'filters',
local: false,
filters: [{
type: 'string',
dataIndex: 'service_number'
}]
};
var store = Ext.create('Ext.data.Store', {
autoLoad: true,
model: 'Service',
pageSize: 10,
proxy: {
type: 'rest',
format: 'json',
url: '/services/list',
extraParams: {order_id: Ext.get('services-panel').dom.dataset.orderId},
idParam: 'dw_id',
reader: {
type: 'json',
root: 'services',
totalProperty: 'totalCount'
}
},
remoteSort: true
});
grid = Ext.create('Ext.grid.Panel', {
header: false,
features: [filtersCfg],
id: 'gridPanel',
height: 335,
frame: true,
title: 'Services',
store: store,
bbar: Ext.create('Ext.PagingToolbar', {
store: store,
displayInfo: true,
displayMsg: 'Displaying services {0} - {1} of {2}',
emptyMsg: "No services to display"
}),
columns: [{
header: 'Service #',
locked: true,
width: 85,
sortable: true,
dataIndex: 'service_number',
renderer: function(value, meta, record){
return '<a href="/services/' + record.data.dw_id + '">' + value + '</a>';
}
}, {
header: '',
locked: true,
width: 35,
sortable: true,
dataIndex: 'is_monitored',
renderer: function(value, meta, record){
if(value){return '<span class="glyphicon glyphicon-stats"></span>';}
}
}, {
header: 'Status',
width: 100,
sortable: true,
dataIndex: 'status',
filter: {
type: 'list',
id: 'status_list',
options: [<%= Service.uniq.pluck(:status).collect(&:to_json).sort.join(",") %>]
}...
1 ответ
Assuming your grid that is using the FiltersFeature
является grid
:
grid.filters.getFilter(dataIndexForFilterYouWant).setValue(newValue);
Точно так же вы можете использовать getValue
to get the value of the filter, or setActive
to make the filter active or inactive. Check out the docs for more info on the FiltersFeature: http://docs.sencha.com/extjs/4.2.2/
or for more info on the filters themselves: http://docs.sencha.com/extjs/4.2.2/