Программно манипулировать 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/

Другие вопросы по тегам