过滤表检查多个列

时间:2017-04-06 15:17:06

标签: javascript sapui5

我有一个包含多个列的表格,顶部还有一个搜索栏,用于执行以下功能。我认为,鉴于下面的代码,只会搜索“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不包含对列的任何搜索,而是包含其他内容。

2 个答案:

答案 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);