如何在 SAPUI5 中过滤表的多个列

Gor*_*rch 3 filtering sapui5

我在 SAPUI5 中遇到问题,无法解决。

我有一个带有工具栏的表格,其中包含一个文本字段。该字段的值用于过滤表的所有列。我知道,我必须创建多个客户过滤器。但我不知道如何将所有部分组合在一起。所以我创建了一个这样的方法:

filtering : function(value, oEvent) {
    var oFilter1 = new sap.ui.model.Filter(this.byId("Column1"), sap.ui.model.FilterOperator.Contains, value);
    var oFilter2 = new sap.ui.model.Filter(this.byId("Column2"), sap.ui.model.FilterOperator.Contains, value);
    var oFilter3 = new sap.ui.model.Filter(this.byId("Column3"), sap.ui.model.FilterOperator.Contains, value);
    var oFilter4 = new sap.ui.model.Filter(this.byId("Column4"), sap.ui.model.FilterOperator.Contains, value);
    var allFilter = new sap.ui.model.Filter([oFilter1, oFilter2, oFilter3, oFilter4], false); 
    var oBinding = oEvent.getSource().getBinding("items");
    oBinding.filter(allFilter);
}
Run Code Online (Sandbox Code Playgroud)

在这里找到的

该方法是从文本字段的 liveChange 事件调用的。我不知道我是否需要 oEvent。

“new sap.ui.model.Filter()”的第一个参数是什么?我认为这是需要的列。新的过滤器必须在哪里触发?我会使用“table.filter(allFilter)”。

我想,我只需要一点解释......

Hao*_*jie 5

  1. Column1、Column2、Column3、Column4 是列的绑定路径。
  2. 您不需要oEvent过滤器。
  3. 您不能调用table.filter(allFilter),table.filter(oEvent)是一个事件处理程序,并在过滤表时触发。您应该调用filtersap.ui.model.ListBinding过滤表。

请看下面的代码:

liveChange:function(oEvent) {
    var newValue = oEvent.getParameter("liveValue");
    filtering(newValue);
},

filtering : function(value) {
   var oFilter1 = new sap.ui.model.Filter("Column1", sap.ui.model.FilterOperator.Contains, value);
   var oFilter2 = new sap.ui.model.Filter("Column2", sap.ui.model.FilterOperator.Contains, value);
   var oFilter3 = new sap.ui.model.Filter("Column3", sap.ui.model.FilterOperator.Contains, value);
   var oFilter4 = new sap.ui.model.Filter("Column4", sap.ui.model.FilterOperator.Contains, value);
   var allFilter = new sap.ui.model.Filter([oFilter1, oFilter2, oFilter3, oFilter4], false); 
   var oBinding = oEvent.getSource().getBinding("items");
   oBinding.filter(allFilter);
}
Run Code Online (Sandbox Code Playgroud)