如何从过滤器功能中获取过滤器

时间:2015-03-17 11:28:43

标签: extjs extjs4

我正在使用FiltersFeature

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

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

网格上有一个过滤器对象,但它只是从所有列中提供过滤器配置。

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'
    }
}

任何人都知道我可以在哪里获得此信息吗?

2 个答案:

答案 0 :(得分:3)

我发现答案是使用这种方法:)

myTableGrid.filters.getFilterData()

我得到这样的东西:

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

答案 1 :(得分:0)

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

        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"}]