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