Extjs中store的filter和filterBy的用法
在Extjs設計介面,很多時候並不需要將所有的資料都顯示到介面上,這樣子我們可以通過在建立store時新增filter屬性或呼叫filterBy方法實現。
1、設計時設定filter屬性
//資料模型Model
Ext.define('model.AppProject', {
extend:'Ext.data.Model',
fields:[
{name:'indexIdApp',mapping:'application>indexId'},
{name:'orgNameApp', mapping:'application>orgName'},
{name:'verifyResultApp', mapping:'application>verifyResultApp',type:'int'}
]
});
//建立store
var proAppStore = Ext.create('Ext.data.Store', {
model: 'model.AppProject',
autoLoad:true,
filterOnLoad:true,
proxy:{
type: 'ajax',
method:'post',
extraParams:{headValue:RetrieveAppProject,bodyValue:"indexId:*^^",handleMsg:AppRetrieveMsg},
url : 'HTPApp.CSP.ServiceProxy.cls',
reader:{
type:'xml',
record:'EvaluateOrg',
totalRecords:'@total'
}
},
filters: [
{//新增過濾掉未稽核和稽核未通過的申請
property: 'verifyResultApp',
value : /^\+?[1-9]*$/
}
]
});
以上程式碼中在建立的時候設定filters時,限定model中verifyResultApp為正整數,其中用到正則表示式,值得注意的是,我們需要在store中新增filterOnLoad:true,這樣在載入的時候這個過濾就會有效果。
2、在需要過濾的時候呼叫filterBy方法
proAppStore.filterBy(function(record) {
return record.get('orgNameApp') == "IT";
});
如上程式碼我們就可以得到'orgNameApp'為IT的資料
當然多個條件限制時可以在return的時候用&&連線
return record.get('verifyResultApp') == 0&&record.get('orgNameApp') == orgNameQuik