2012-05-29 7 views
0

У меня есть этот код, который позволяет мне отфильтровать мой магазин на одной колонке:Как фильтровать по нескольким столбцам с использованием ExtJS сетки фильтра

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

Update: Это ExtJs 3,4

ответ

0

Если вы используете фильтры, как в коде, публикуемой вы получите логическую AND операции. Если вам нужно что-то более сложное, вы можете просто создать функцию фильтра, как это:

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

, когда я включаю этот код в мои данные, я не получаю фильтрации на всех – Mike

+0

ваш код или мой код? – sha

+0

Я только что использовал: store.filter (Ext.create ('Ext.util.Filter', { filterFn: function (item) { return item.get ('color') == $ _GET ['color'] && item.get ('priority') == $ _GET ['priority']; }, })) – Mike