Sapui5 用“过滤”;或;及;及;多域上的条件
我想实现下面的where条件。如何在UI5中创建过滤器Sapui5 用“过滤”;或;及;及;多域上的条件,sapui5,Sapui5,我想实现下面的where条件。如何在UI5中创建过滤器 field-A-NE“O”和(field-B包含“搜索文本”或field-C包含“搜索文本”) 后端业务场景: 绑定列表时应用筛选器字段-A NE'O' 应用过滤器(字段B包含“搜索文本”或字段C包含“搜索文本”)在搜索字段上实现搜索功能 筛选器实例: new sap.ui.model.Filter("field-A", sap.ui.model.FilterOperator.NE, "O"); new sap.ui.model.Filte
field-A-NE“O”和(field-B包含“搜索文本”或field-C包含“搜索文本”)
后端业务场景:
字段-A NE'O'
李>
(字段B包含“搜索文本”或字段C包含“搜索文本”)
在搜索字段上实现搜索功能李>
筛选器实例:
new sap.ui.model.Filter("field-A", sap.ui.model.FilterOperator.NE, "O");
new sap.ui.model.Filter("field-B", sap.ui.model.FilterOperator.contains, search-text);
new sap.ui.model.Filter("field-C", sap.ui.model.FilterOperator.contains, search-text);
下面是一个使用Northwind的OData组合多个过滤器的最小示例:。可以找到完整的列表 实例化筛选器时,请使用属性
筛选器
和和组合多个筛选器,而不是路径
、运算符
和
在本例中,我们定义了三个过滤器:
- 一个用于第一个
字段-A NE'O'
,该字段也用于上述Plunker示例中的初始绑定(过滤器1)
- 对于搜索事件处理程序中的另外两个,使用
和:false表示或(过滤器2)
过滤器1:
getInitialFilter:function(){
返回新过滤器(“Field-A”,FilterOperator.NE,“O”);
},
过滤器2:
getSearchFilters:函数(查询){
返回新过滤器({
过滤器:[
新筛选器(“字段B”,FilterOperator.Contains,query),
新过滤器(“Field-C”,FilterOperator.Contains,query),
],
和:错,
});
},
最后,当用户输入一个搜索查询时,我们将这两个过滤器与应用于
onSearch:函数(事件){
this.byId(“myList”).getBinding(“items”).filter(新过滤器({
过滤器:[
这是.getInitialFilter(),
this.getSearchFilters(event.getParameter(“查询”)),
],
而且:没错,
}),FilterType.Application);
},
注意:过滤时,请记住将“应用程序”
作为myListBinding.filter中的第二个参数应用,以让框架知道过滤器是由您设置的(应用程序),而不是由控件设置的。否则,列表绑定将把您的过滤器与最初设置的应用程序过滤器结合起来
var andFilter = [];
var orFilter = [];
orFilter.push(new sap.ui.model.Filter("title", sap.ui.model.FilterOperator.Equal, "filtervalue"));
orFilter.push(new sap.ui.model.Filter("status", sap.ui.model.FilterOperator.Equal, "filtervalue"));
andFilter.push(new sap.ui.model.Filter(orFilter, false));
orFilter = [];
orFilter.push(new sap.ui.model.Filter("title", sap.ui.model.FilterOperator.Equal, "filtervalue1"));
orFilter.push(new sap.ui.model.Filter("status", sap.ui.model.FilterOperator.Equal, "filtervalue1"));
andFilter.push(new sap.ui.model.Filter(orFilter, false));
oBinding.filter(new sap.ui.model.Filter(andFilter, true));
这应转化为:
title=filtervalue || status=filtervalue && title=filtervalue1 || status=filtervalue1
对于具有或条件的多个筛选器,请使用以下语法:(将AND的false更改为true)
它真的是“title=filtervalue | | status=filtervalue&&title=filtervalue1 | | status=filtervalue1”还是结果(title=filtervalue | | status=filtervalue)&&(title=filtervalue1 | | status=filtervalue1)?
var InputFilter = new sap.ui.model.Filter({
filters: [
new sap.ui.model.Filter("Name", sap.ui.model.FilterOperator.EQ, inptval),
new sap.ui.model.Filter("ID", sap.ui.model.FilterOperator.EQ, inptval)
],
and: false
});
this.oModel.read("/Products", {
filters: [InputFilter],
success: jQuery.proxy(this._fnSuccessGet, this),
error: jQuery.proxy(this._fnErrorGet, this)
});