Как отфильтровать сетку с помощью многоуровневых / множественных критериев фильтрации в extjs?

У меня есть сетка с большим количеством записей. Я могу фильтровать по любому из критериев поиска. Но не двое или больше. Например, я сначала фильтрую сетку по названиям штатов, а затем хочу отфильтровать конкретный город на основе записей, доступных для этого конкретного штата. Возможно ли это без каких-либо внешних плагинов.?

Я просто использую встроенные фильтры, доступные во фреймворке Extjs.

Помощь очень ценится.

Большое спасибо :-)


person Anand Singh    schedule 20.07.2013    source источник


Ответы (2)


Попробуй это:

Ext.getCmp('yourGrid').getStore().filterBy(function(record) {
    return (record.get('State') == 'state1' && record.get('City') == 'city1')
});

Изменить:

Попробуй это:

store.filter([{
        property: 'State',
        anyMatch: true,
        value   : 'state1'
    },{
        property: 'City',
        anyMatch: true,
        value   : 'city1'
    }]);
person Aminesrine    schedule 20.07.2013
comment
Спасибо. Но это работает только тогда, когда мы вводим полное название города, а не только его часть. На всякий случай я хочу отфильтровать Нью-Йорк и Новый Орлеан, просто введя New в сочетании с некоторыми другими критериями поиска, общими для обоих. - person Anand Singh; 21.07.2013
comment
Я внес правильные изменения и использую его, но у меня возникла ситуация, когда я должен использовать два вышеупомянутых вместе. Не могли бы вы помочь ..? - person Anand Singh; 22.07.2013
comment
извините, но я не понял: я должен использовать два вышеупомянутых вместе, не могли бы вы объяснить мне, пожалуйста - person Aminesrine; 22.07.2013

Извините, я получил ответ ... Вот так:

myStore.filter([{property: 'Data_Drive_ID',anyMatch: true,value:DsearchStr},
                    {property: 'Voice_Drive_ID',anyMatch: true,value:VsearchStr},
                    {property: 'Name',anyMatch: true,value: MsearchStr},
                    {filterFn: function(record, id){
                        if(Ext.Array.indexOf(TsearchStr, record.get("Team")) !== -1){
                            return true;
                        }    
                        return false;
                    }}
                   ]);
person Anand Singh    schedule 22.07.2013