XML 中的多个过滤器

J0r*_*500 3 sapui5

所以我有一个列表,但我想过滤掉该类型(如果它'05''01'不显示在列表中)。以下代码适用于'05'但不适用于'01'. 我该如何编写它来添加另一个值?

items="{
  path: 'Entries',
  filters: [{
    path: 'Type',
    operator : 'NE',
    value1 : '05',
    value2: '01'
  }]
}"
Run Code Online (Sandbox Code Playgroud)

我尝试了这个,我认为这是合乎逻辑的方式,但它随后开始显示 05 和 01。所以我假设这是使用OR过滤器而不是过滤器AND过滤器组合。

items="{
  path:'Entries',
  filters: [{
    path: 'Type',
    operator: 'NE',
    value1: '05'
  }, {
    path: 'Type',
    operator: 'NE',
    value1: '01'
  }]
} 
Run Code Online (Sandbox Code Playgroud)

Bog*_*ann 6

XML 视图中的语法如下:

items="{
  path: '/Products',
  filters: [
    {
      filters: [
        {
          path: 'ProductName',
          operator: 'StartsWith',
          value1: 'Sir '
        },
        {
          path: 'Discontinued',
          operator: 'EQ',
          value1: false
        },
      ],
      and: true
    }
  ]
}"
Run Code Online (Sandbox Code Playgroud)

工作示例:https://embed.plnkr.co/wAlrHB? show=view/Home.view.xml,preview

该参数filters等待过滤器信息对象的数组。过滤器信息对象受以下属性组合的约束:

  • path, operator, value1value2如果适用的话)
  • 或者filtersand。<-- 这就是我们所需要的。

API参考:sap.ui.model.Filter


第二种方法不起作用的原因是,两个过滤器都指向同一路径 ( 'Type'),这会导致 OR 逻辑。

应用于单个表列的所有过滤器均进行“或”运算,而应用于不同表列的过滤器则进行“与”运算。请使用过滤器的自动分组(如果适用)或使用显式 AND/OR 过滤器,不支持两者的混合。[来源]