我有一个包含多个列的表格,顶部还有一个搜索栏,用于执行以下功能。我认为,鉴于下面的代码,只会搜索“field1”列,但事实上,如果我在另一列中搜索一个术语,它将显示出来。现在我的问题是我添加了一个新列,我想添加到此搜索中。我尝试将其添加到false
数组中,如此
filters
但它不起作用。我让这个专栏不可见,因为我不希望它显示在桌子上,但我希望它仍然可以搜索。我想我的第一个问题是当我只指定“field1”时搜索栏适用于多个字段的原因。
new filter("fieldIWant",FilterOperator.Contains,sValue)
注意:这是预编写的代码而不是我的代码所以我不想做任何重大更改,而是理解为什么它会像它那样工作。 onSearchPressed : function() {
var sValue = this.byId("searchField").getValue();
var aFilters = [];
var filters = [new Filter("field1","EQ",sValue)];
aFilters = filters;
var oFilter = new Filter({aFilters : filters});
if (!aFilters) {
aFilters = [];
}
this._aSearchFilters = aFilters;
if (this._aSelectFilters) {
aFilters = aFilters.concat(this._aSelectFilters);
}
if (this._aQuickFilters) {
aFilters =aFilters.concat(this._aQuickFilters);
}
var oBinding = this.byId("catalogTable").getBinding("items");
oBinding.filter(aFilters );
},
和_aSelectFilters
不包含对列的任何搜索,而是包含其他内容。
答案 0 :(得分:1)
您可能想要检查元数据文件;看看sap:filterable标签。如果它设置为false并且您仍然可以过滤,那么您必须检查后端。如果它们设置为true,那么您使用多个new Filter(...)
完成此操作的方式可以正常工作。
答案 1 :(得分:0)
希望这会对你有所帮助
onSearchPressed : function() {
var sValue = this.byId("searchField").getValue();
var aFilters = [];
var searchFilter1 = new sap.ui.model.Filter("key_of_column1",sap.ui.model.FilterOperator.Contains, sValue);
var searchFilter2 = new sap.ui.model.Filter("key_of_column2",sap.ui.model.FilterOperator.Contains, sValue);
var searchFilter3 = new sap.ui.model.Filter("key_of_column3",sap.ui.model.FilterOperator.Contains, sValue);
//Add as many columns you have
aFilters.push(searchFilter1);
aFilters.push(searchFilter2);
aFilters.push(searchFilter3);
var table = this.byId("catalogTable");
table.getBinding("items").filter(aFilters);