如何使用Extjs4在网格过滤器功能中应用精确匹配?

时间:2011-06-21 07:11:23

标签: extjs extjs4

我正在使用Extjs4,我想在网格过滤中应用exactMatch。我正在使用新引入的网格过滤功能。我尝试使用exactMatch但它不起作用。这是我的示例代码:

Ext.define('MyModel', {
        extend: 'Ext.data.Model',
        fields: [
            {name: 'ID', type: 'string'},
            {name: 'Title', type: 'string'}
        ]
    });

var store = Ext.create('Ext.data.Store', {         
        model: 'MyModel',
        proxy: {
            type: 'ajax',                       
            url: 'myurl',                       
            reader: {
                type: 'json'                  
            }
        },
        sorters: [{
            property: 'ID',
            direction:'DESC'
        }],
        autoLoad:true            
    });

var filters = {
        ftype: 'filters',               
        encode: true, 
        local: true,   
        filters: [{
            type: 'numeric',
            dataIndex: 'ID',
            disabled: true
        },{
            type: 'string',
            dataIndex: 'Title',
            exactMatch:true
        }]
    };

var grid = Ext.create('Ext.grid.Panel', {
        store: store,
        columns: [{
            header: 'ID',
            dataIndex: 'ID',
            width: 20
        },{
            header: 'List Title',
            dataIndex: 'Title',
            flex:1
        }],
        renderTo: 'editor-grid',
        width: 700,
        height: 400,
        frame: true,                      
        features: [filters]
    });

谢谢..

2 个答案:

答案 0 :(得分:1)

对于ExtJS V4.0,您不必为网格配置单独的过滤器选项,因为它们已经包含在内。您可以在加载数据后调用存储上的方法进行过滤,如下所示:

store.filter("Title", "Bob");

或者如果你想做这样的多个过滤器:

store.filter([
    {property: "email", value: "Bob"},
    {filterFn: function(item) { return item.get("ID") > 10; }}
]);

答案 1 :(得分:0)

网格的要素属性只能包含已从Feature class扩展的类。

请参阅分组功能:

Ext.define('Ext.grid.feature.Grouping', {
    extend: 'Ext.grid.feature.Feature',
    alias: 'feature.grouping'
    // More properties and functions...
}

Grouping Feature Usage

var groupingFeature = Ext.create('Ext.grid.feature.Grouping', {
    groupHeaderTpl: 'Group: {name} ({rows.length})', //print the number of items in the group
    startCollapsed: true // start all groups collapsed
});

var grid = Ext.create('Ext.grid.Panel', {
          features:[groupingFeature]
}