我在 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)”。
我想,我只需要一点解释......
oEvent
过滤器。table.filter(allFilter)
,table.filter(oEvent)
是一个事件处理程序,并在过滤表时触发。您应该调用filter
来sap.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)