0

単一の列でストアをフィルタリングできるようにする次のコードがあります。

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です

4

1 に答える 1

0

投稿したコードのようにフィルターを使用すると、論理AND演算が得られます。より複雑なものが必要な場合は、次のようなフィルター関数を簡単に作成できます。

store.filter(Ext.create('Ext.util.Filter', {
   filterFn: function(item) { 
       return item.get('color') == 'RED' || item.get('priority') == 'low'; 
   }, 
}))
于 2012-05-29T19:15:37.297 に答える