如何在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
答案 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将删除该商店中的先前值。