1. 程式人生 > >Extjs中store的filter和filterBy的用法

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