SAPUI5:如何使用2个或更多值过滤数据

use*_*563 3 sapui5

我正在尝试使用/在SAPUI5中的一些东西,我实现了一个非常简单的搜索:

    var filters = [];
    var query = evt.getParameter("query");
    if (query && query.length > 0) {
        var nameFilter = new sap.ui.model.Filter("name", sap.ui.model.FilterOperator.Contains, query);

        filters.push(nameFilter);
    }

    var list = this.getView().byId("list");
    var binding = list.getBinding("items");
    binding.filter(filters);
Run Code Online (Sandbox Code Playgroud)

现在我有以下问题:通过这个逻辑,我可以通过一个人的名字来搜索,或者更确切地说过滤.我还有一些其他领域,如年龄,性别等,我也想搜索年龄或性别.所以我尝试创建第二个过滤器,例如"genderFilter",它使用"gender"字段.在此之后使用.push()方法将第二个过滤器添加到filters [] ..但是这不起作用.

我已经尝试过观看文档,看了不同的例子,尝试了不同的方法 - 但我很无奈.有人可以帮我解决这个问题吗?

小智 7

对于要求,此代码将起作用.

var list = this.getView().byId("list");
var binding = list.getBinding("items");
if( !query ) {
    binding.filter( [] );
} 
else {
   binding.filter( [ new sap.ui.model.Filter([
      new sap.ui.model.Filter("name", sap.ui.model.FilterOperator.Contains, query ),
      new sap.ui.model.Filter("gender", sap.ui.model.FilterOperator.Contains, query )
   ],false)
]
Run Code Online (Sandbox Code Playgroud)


Qua*_*ure 4

根据API

对于手动过滤,您应该始终传递 FilterType

如果您将代码更改为

 list.getBinding("items").filter(filters, sap.ui.model.FilterType.Application);
Run Code Online (Sandbox Code Playgroud)

它应该有效。

另请参阅最底部的https://openui5.hana.ondemand.com/docs/guide/BindingAggregations.html 。