2017-04-06 50 views
0

我有一個表格有幾列,還有一個頂部的搜索欄執行下面的功能。我認爲給定下面的代碼,只會搜索「field1」列,但實際上如果我在另一列搜索一個術語,它會顯示出來。現在我的問題是我添加了一個新的列,我想添加到此搜索。我嘗試將其添加到filters陣列這樣過濾表格檢查多列

new filter("fieldIWant",FilterOperator.Contains,sValue)

,但它不會工作。我讓列不可見,因爲我不希望它顯示在桌面上,但我希望它仍然可以搜索。我想我的第一個問題是爲什麼當我只指定「field1」時,搜索欄爲多個字段工作。

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_aQuickFilters不包含任何對列的搜索,他們是爲了別的。

回答

1

您可能要檢查您的元數據文件;看一下sap:可過濾標籤。如果它設置爲false並且您仍然可以過濾,那麼您必須檢查後端。如果它們設置爲true,那麼你使用多個new Filter(...)的方式可以正常工作。

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

這就是我所做的,而不是推我只是連接'filters'數組中的過濾器。這也不能解釋爲什麼我要爲多列獲取過濾器:/ – SAPUI5GUY