如何使我的搜索模糊

时间:2014-10-19 10:59:53

标签: javascript sapui5

我可以使用单个值将特定列表放到顶部。如何使我的搜索模糊,以便它接受列表中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.

类型的输入

2 个答案:

答案 0 :(得分: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);

据我记得,这将使用AND关系链接不同的过滤器,这意味着只有tmpla包含在所有字段中才会匹配。没有办法使这个OR。解决方法是在模型上创建一个搜索字段,其中包含您可能作为连接字符串搜索的所有值。

BR 克里斯

答案 1 :(得分:1)

对于AND关系,请查看@cschuff的答案。

实际上,您可以使用OR定义搜索字段的new sap.ui.model.Filter(aFilters, bAnd);关系。如果设置了bAnd,则过滤器中的所有过滤器都将被AND,否则它们将被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]);