【问题标题】:How do I filter on multiple columns using ExtJs grid filter如何使用 ExtJs 网格过滤器过滤多个列
【发布时间】:2012-06-04 00:47:01
【问题描述】:

我有这段代码允许我在单个列上过滤我的商店:

var events_ds = new Ext.data.JsonStore({
                autoLoad: true,
                autoDestroy: true,
                url: '<% $base %>json/events/<% $eventWWN %>.json',
                storeId: 'events_ds',
                idProperty: 'id',
                fields: [ 'id', 'precedence', 'affectedWWN', 'eventType', 'color', 'CollectTime' ],
                listeners:
                         { 'load': function(store) {
                                store.filter( 'color', $_GET['color'] )
                         }
                 }
        });

现在,我想过滤多个列。

我正在考虑将“侦听器”行更改为此,但它正在工作,我没有看到另一个可以使用多个过滤器的示例 - 有什么建议吗?

listeners:
     { 'load': function(store) {
            store.filter( 'color', $_GET['color'] ),
            store.filter( 'priority', $_GET['priority'] )
     }
}

更新:这是 ExtJs 3.4

【问题讨论】:

    标签: javascript extjs filter extjs3


    【解决方案1】:

    如果您在发布的代码中使用过滤器,您将获得符合逻辑的AND 操作。如果你需要更复杂的东西,你可以简单地创建一个像这样的过滤器函数:

    store.filter(Ext.create('Ext.util.Filter', {
       filterFn: function(item) { 
           return item.get('color') == 'RED' || item.get('priority') == 'low'; 
       }, 
    }))
    

    【讨论】:

    • 当我将该代码插入我的数据时,我根本没有过滤
    • 我刚用过:store.filter(Ext.create('Ext.util.Filter', { filterFn: function(item) { return item.get('color') == $_GET[ 'color'] && item.get('priority') == $_GET['priority']; }, }))
    • 我的意思是颜色和优先级都应该是那些值,然后才能显示正确?我只是在没有应用过滤器的情况下获取整个数据集
    • 是的。它会像这样工作。你是用 ExtJs4.0x 还是别的什么?
    • 好吧,看起来我们在 3.4 上,所以这是我们的问题
    猜你喜欢
    • 2020-06-12
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    相关资源
    最近更新 更多