如何在extjs中过滤商店?

时间:2015-05-26 13:39:54

标签: extjs

如何在extjs中存储过滤器?

 fieldLabel    : 'Status',
 xtype         : 'combo',
 name          : 'status',
 store    : new Ext.data.ArrayStore({ fields : ['status'], data : [['A'],['B'],['C']),
 displayField  : 'status',
 valueField   : 'status',
 autoSelect       : true,
 typeAhead     : true,
 validateOnBlur: true,
 queryMode    : 'local'

我需要根据某些条件进行过滤..样本

if(Somecondition)
.... filter A and B
elseif(Somecondition)
   filter B
else
  Filter only A and C

2 个答案:

答案 0 :(得分:0)

我不太确定您要做什么,但这里有一个解决方案,可以将组合框的值更改为三个选项的特定子集。如果“Somecondition”应该过滤任意数据集,那么我将需要更多地了解“Somecondition”如何与数据相关。

{
            fieldLabel: 'Status',
            xtype: 'combo',
            name: 'status',
            store: Ext.create('Ext.data.Store', {
                fields: ['status'],
                data: [{
                    'status': 'A'
                }, {
                    'status': 'B'
                }, {
                    'status': 'C'
                }, ]
            }),
            displayField: 'status',
            valueField: 'status',
            autoSelect: true,
            typeAhead: true,
            validateOnBlur: true,
            queryMode: 'local',
            listeners: {
                beforerender: function(t) {
                    if (Somecondition) {
                        t.store.loadData([{
                            'status': 'A'
                        }, {
                            'status': 'B'
                        }])
                    } else if (Somecondition) {
                        t.store.loadData([{
                            'status': 'B'
                        }])
                    } else {
                        t.store.loadData([{
                            'status': 'A'
                        }, {
                            'status': 'C'
                        }])
                    }

                }
            }
        }

答案 1 :(得分:0)

statusStore.clearFliter();
statusStore.filter(function(r) {
            var value = r.get('status');
            return (value == "A" || value == "B");
    });

使用商店过滤器也可以得到结果。

ClearFliter将删除该商店中的先前值。