Sapui5 用“过滤”;或;及;及;多域上的条件

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

我想实现下面的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.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)
    });