Javascript 筛选表检查多个列

Javascript 筛选表检查多个列,javascript,sapui5,Javascript,Sapui5,我有一个有几列的表格,顶部还有一个搜索栏,执行下面的功能。我认为给定下面的代码,只会搜索“field1”列,但事实上,如果我在另一列中搜索一个术语,它会显示出来。现在我的问题是我要添加一个新的列,我想添加到这个搜索中。我尝试将其添加到过滤器数组中,如下所示 新过滤器(“fieldIWant”,FilterOperator.Contains,sValue) 但这行不通。我使列不可见,因为我不希望它显示在表上,但我希望它仍然可以搜索。我想我的第一个问题是,当我只指定“field1”时,为什么搜索栏适

我有一个有几列的表格,顶部还有一个搜索栏,执行下面的功能。我认为给定下面的代码,只会搜索“field1”列,但事实上,如果我在另一列中搜索一个术语,它会显示出来。现在我的问题是我要添加一个新的列,我想添加到这个搜索中。我尝试将其添加到
过滤器
数组中,如下所示

新过滤器(“fieldIWant”,FilterOperator.Contains,sValue)

但这行不通。我使列不可见,因为我不希望它显示在表上,但我希望它仍然可以搜索。我想我的第一个问题是,当我只指定“field1”时,为什么搜索栏适用于多个字段


注意:这是预先编写的代码,不是我的代码,所以我不想做任何重大更改,而是想了解它为什么会这样工作<代码>\u aSelectFilters
\u aQuickFilters
不包含对列的任何搜索,它们是对其他内容的搜索

希望这对你有帮助

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

您可能需要检查元数据文件;看看sap:filterable标签。如果设置为false,并且您仍然能够进行筛选,那么您必须检查后端。如果它们被设置为true,那么您使用多个
新过滤器(…)
的方式可以很好地工作。

这就是我所做的,而不是推送,我只是将过滤器连接到
过滤器
数组中。这也不能解释为什么我要为多个列设置过滤器:/
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);