Согласно sap.ui.model.Filter documentation, вы можете создать фильтр либо на основе информационного объекта фильтра, либо из массива ранее созданных фильтров. Это позволяет нам сделать следующее:
- Создать фильтр для первого значения (например, «стек»)
- Создание фильтра для второго значения (например, «Переполнение»)
- Создать фильтр, который содержит оба этих значения и использует его для фильтрации таблицы.
Давайте посмотрим на некоторый код.
// We will only display rows where ProductName contains
// "Stack" AND CustomerName equals "Overflow"
var oFilterForProductName,
oFilterForCustomerName,
aArrayWhichContainsBothPreviousFilters = [],
oFilterToSetOnTheTable;
var sValueToFilterTheProductNameOn = "Stack",
sValueToFilterTheCustomerNameOn = "Overflow";
var sKeyForProductNameInTheTableModel = "ProductName",
sKeyForCustomerNameInTheTableModel = "CustomerName";
var oTableToFilter = this.byId("myTableId");
// Step 1: create two filters
oFilterForProductName = new sap.ui.model.Filter(
sKeyForProductNameInTheTableModel,
sap.ui.model.FilterOperator.Contains,
sValueToFilterTheProductNameOn);
oFilterForCustomerName = new sap.ui.model.Filter(
sKeyForCustomerNameInTheTableModel,
sap.ui.model.FilterOperator.EQ,
sValueToFilterTheCustomerNameOn);
// Step 2: add these two filters to an array
aArrayWhichContainsBothPreviousFilters.push(oFilterForProductName);
aArrayWhichContainsBothPreviousFilters.push(oFilterForCustomerName);
// Step 3: create a filter based on the array of filters
oFilterToSetOnTheTable = new sap.ui.model.Filter({
filters: aArrayWhichContainsBothPreviousFilters,
and: true
});
oTableToFilter.getBinding("items").filter(oFilterToSetOnTheTable , sap.ui.model.FilterType.Application);
Надеюсь, это поможет. Дайте знать, если у вас появятся вопросы.
Chris
Возможный дубликат [Фильтр с "или" и "и" условия для нескольких полей] (https://stackoverflow.com/questions/42433200/filter-with-or-and-and-conditions-on-multiple- поля) – boghyon