2014-10-19 3 views
1

Я могу получить конкретный список сверху, используя одно значение. Как я могу сделать свой поиск нечетким, чтобы он принимал любые данные из odata в списке?Как сделать мой поиск нечетким

var sf = new sap.m.SearchField({ 
         placeholder: "Search", 
         showRefreshButton: true, 
        liveChange: function(oEvent) { 
var tpmla = oEvent.getParameter("newValue"); 
var filters = new Array(); 
var oFilter = new sap.ui.model.Filter("Kunnr", sap.ui.model.FilterOperator.Contains, tpmla); 
         filters.push(oFilter); 
         this.oList = sap.ui.getCore().byId("po_list"); 
         this.oList.getBinding("items").filter(filters);}) 

мне нужно понять, как я могу дать больше входов типа Name1, Addr.

ответ

1

Вы можете добавить несколько фильтров к sap.ui.model.ListBinding:

var filters = []; 
filters.push(new sap.ui.model.Filter("Kunnr", sap.ui.model.FilterOperator.Contains, tpmla)); 
filters.push(new sap.ui.model.Filter("Name1", sap.ui.model.FilterOperator.Contains, tpmla)); 
filters.push(new sap.ui.model.Filter("Addr", sap.ui.model.FilterOperator.Contains, tpmla)); 

this.oList = sap.ui.getCore().byId("po_list"); 
this.oList.getBinding("items").filter(filters); 

Насколько я помню, это будет связывать различные фильтры с отношением И, что означает, что оно соответствует только tmpla содержится во ВСЕХ из полей. Невозможно сделать это OR. Обходной путь состоит в том, чтобы просто создать поле поиска в вашей модели, которое содержит все значения, которые вы могли бы искать в качестве конкатенированной строки.

BR Крис

+0

Привет, cschuff, вы можете определить OR для фильтров, см. Мой ответ ниже. – Allen

+0

Nice, thx для подсказки. Не удается найти это в документах:/вы никогда не прекращаете обучение :) – cschuff

1

Для AND отношений, пожалуйста, проверьте ответ @cschuff.

На самом деле вы можете определить отношение полей поиска с помощью new sap.ui.model.Filter(aFilters, bAnd); Если bAnd установлено, все фильтры в фильтре будут ANDed else, они будут ORed.

var filters = []; 
filters.push(new sap.ui.model.Filter("Kunnr", sap.ui.model.FilterOperator.Contains, tpmla)); 
filters.push(new sap.ui.model.Filter("Name1", sap.ui.model.FilterOperator.Contains, tpmla)); 
filters.push(new sap.ui.model.Filter("Addr", sap.ui.model.FilterOperator.Contains, tpmla)); 
var orFilters = new sap.ui.model.Filter(filters,false); 

this.oList = sap.ui.getCore().byId("po_list"); 
this.oList.getBinding("items").filter([orFilters]);