我有结构的商店:
Ext.create('Ext.data.Store', {
fields: [
'title'
],
data: [{
title: 'ABC'
}, {
title: 'ABC2'
}, {
title: 'ABC3'
}, {
title: 'ABC4'
}, {
title: 'ABC5'
}, {
title: 'ABC6'
}]
});
因此,当我加载此商店时,List将填充所有6条记录。
我只想按下按钮过滤此商店我只想从这6条记录中获取一些选定的记录是否有可能。
向我提供一些想法或工作代码。
答案 0 :(得分:7)
根据标题过滤商店
Ext.getStore('storeId').filter("title", "ABC3");
清除过滤器
Ext.getStore('storeId').clearFilter();
请参阅商店filter doc
<强>更新强>
Ext.getStore('storeId').filterBy(function(record){
var title = record.get('title');
if(title == "ABC" || title == "ABC1" || title == "ABC2")
return record;
});
答案 1 :(得分:0)
我的方法是在点击按钮时在商店上设置过滤器。在我的情况下,它是一个选择字段,在更改事件I过滤器与selectfield
中的当前值进行比较 onChangeStatusSelectfield: function (newValue, oldValue) {
var store = Ext.getStore('CustomVacationRequest');
console.log('Accepted Filter');
newValue = this.getStatusSelectfield().getValue();
console.log(store, newValue);
store.clearFilter();
if (store != null);
store.filter(function (record) {
if (newValue == record.data.status) { //your data from the store compared to
//the value from the selectfield
return true;
}
Ext.getCmp("VacationRequestsManagerList").refresh() //refresh your list
});
},
这只是我控制器的一部分。根据您自己的选择和需要处理事件,按钮和商店。祝你好运!