2016-10-06 21 views
0

我想實現多個過濾器的表綁定搜索。該要求是多重過濾與和條件相關聯:SAPUI5過濾器和操作多個參數

僞代碼:

if(filterA && filter1 || filterB && filter1 || filterC && filter1){...} 

我怎樣才能實現呢?

我試着用下面的:

var filter1 = [ new sap.ui.model.Filter("desc", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')]; 
       var filter2 = [ new sap.ui.model.Filter("costnr", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')]; 
       var filter3 = [ new sap.ui.model.Filter("location", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')]; 
       var filter4 = [ new sap.ui.model.Filter("location2", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')]; 
       var filter5 = [ new sap.ui.model.Filter("street", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')]; 
       var filter6 = [ new sap.ui.model.Filter("houseno", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')]; 
       var filter7 = [ new sap.ui.model.Filter("customer", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')]; 
       var filter8 = [ new sap.ui.model.Filter("ordernr", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flaga", FilterOperator.NE, 'X')]; 
       var oFilterExt = new sap.ui.model.Filter({filters: [filter1,filter2, filter3, filter4, filter5, filter6, filter7, filter8], and: false}); 

       //binding 
       binding.filter(oFilterExt, sap.ui.model.FilterType.Application); 

回答

3

你在正確的軌道上與and屬性:

new sap.ui.model.Filter({ 
    and:false, 
    filters: [ 
     new sap.ui.model.Filter({ 
     and: true, 
     filters: [ 
      new sap.ui.model.Filter("property1", FilterOperator.Contains, sQuery), 
      new sap.ui.model.Filter("property2", FilterOperator.Contains, sQuery) 
     ]}), 
     new sap.ui.model.Filter({ 
     and: true, 
     filters: [ 
      new sap.ui.model.Filter("property3", FilterOperator.Contains, sQuery), 
      new sap.ui.model.Filter("property4", FilterOperator.Contains, sQuery) 
     ]}), 
     new sap.ui.model.Filter({ 
     and: true, 
     filters: [ 
      new sap.ui.model.Filter("property5", FilterOperator.Contains, sQuery), 
      new sap.ui.model.Filter("property6", FilterOperator.Contains, sQuery) 
     ]}) 
    ]}); 
+0

謝謝,這是解決辦法 – iach