如何从 Filtersfeature 获取我的过滤器

How do I get my Filters from Filtersfeature

我正在使用 FiltersFeature:

this.features = {
    ftype: 'filters',
    encode: false,
    local: true
};

我想在 table 上访问我当前的过滤器。 IE。不是过滤器配置对象,而是用户对 table 所做的更改(我想将其保存在数据库中)。

网格上有一个过滤器对象,但它只为我提供了所有列的过滤器配置。

handler: function (btn) {
    var grid = btn.up('grid');
    grid.filters
}

我需要实际值。我正在寻找这样的东西:

var v = {
    filter: {
        column: 'name',
        value: 'bob'
    },
    filter: {
        column: 'date',
        value1: '11.11.11',
        value2: '12.12.12'
    }
}

有人知道我在哪里可以得到这些信息吗?

过滤器不包含任何值。 您应该从网格中解析实际值。

        var columnTitle = [];
        var fieldName = [];
        var data = [];

        var visibleColumns = grid.query('gridcolumn:not([hidden])');
        visibleColumns.forEach(function(c) {           
           columnTitle.push(c.text);
           fieldName.push(c.dataIndex);           
        });

        for (rowIndex = 0; rowIndex < grid.store.getCount(); rowIndex++) {          
            var row = grid.getView().getRow(rowIndex);
            var fieldValues = Ext.fly(row).query('div.x-grid-cell-inner');
            var map = {}
            for (colIndex = 0; colIndex < fieldName.length; colIndex++) {               
                map[fieldName[colIndex]] = fieldValues[colIndex].textContent;
            }           
            data.push(map);
        }      

因此,您将得到一个对象数组,类似于

[{"user.login":"iivanov","email":"ivanov@mail.com"},{"user.login":"ppetrov","email":"petrov@mail.com"},{"user.login":"plosev","email":"elk@gmail.com"}]  

我找到的答案是使用这个方法:)

myTableGrid.filters.getFilterData()

我得到这样的结果:

v = [{
        "field": "myColumn1", 
        "data": {
                "type": "string", 
                "value": "anna"}
    }, {
        "field": "myColumn2_fixedvalue",
        "data": {
            "type": "list", 
            "value": [60]}
    }]