И / или между массивами фильтров - PullRequest
0 голосов
/ 30 апреля 2019

Итак, у меня есть два массива фильтров, и вместо того, чтобы просто конкатенировать и позволить UI5 выбирать / группировать соответствующие свойства с помощью и / или оператора, я хочу выполнить AND между обоими массивами фильтров.

Я пыталсяпрохождение обоих массивов фильтров, а также добавление и.Но это не работает.

var kFilter = new Filter({
  filters: [
    dFilters,
    bFilters
  ],
  and: true
});

1 Ответ

1 голос
/ 30 апреля 2019
var aFilter = [];
var aOrFilter = [];
var aAndFilter = [];

//Create filter array for OR condition
aOrFilter[
    new sap.ui.model.Filter("Property1", sap.ui.model.FilterOperator.EQ, sValue),
    new sap.ui.model.Filter("Property2", sap.ui.model.FilterOperator.EQ, sValue)
];

//Create filter array for AND condition
aAndFilter[
  new sap.ui.model.Filter("Property3", sap.ui.model.FilterOperator.EQ, sValue),
  new sap.ui.model.Filter("Property4", sap.ui.model.FilterOperator.EQ, sValue)
];

//Concatinating both filter arrays with AND condition
aFilter = new sap.ui.model.Filter([
    new sap.ui.model.Filter(aOrFilter, false), //Filters get OR codition
    new sap.ui.model.Filter(aAndFilter, true) //Filters get AND condition
], true); //Concatinating both with AND condition

Результат:

(Property1 EQ "XXX" OR Property2 EQ "XXX") AND (Property3 EQ "XXX" AND Property4 EQ "XXX")
...