2017-11-24 2 views
0

テーブルから選択したすべての項目を使用してodataモデルを読み込もうとしています。テーブルにはIDとNAMEと呼ばれる2つのキーがあり、キーのうちの1つのみにフィルタが必要なことがあります。 1つのフィルターのみを使用しても結果は変わりませんでした。同じ列に複数の値を設定するためのUI5フィルタ

次に、選択したすべてのアイテムのフィルタを作成します。その後、フィルタを使用してモデルから読み込みますが、常にテーブルの最初のエントリである1つの結果が返されます。

私はhereを見つけました。フィルターアレイを使用して別のフィルターを作成して、フィルターでANDまたはORを行うことができますが、何も変更はありませんでした。

var table = this.byId("table"); 
var items = table.getSelectedItems(); 
var filters = []; 
for (var i = 0; i < items.length; i++) { 
    var item = items[i].getBindingContext().getObject(); 
    var id = new Filter("ID", FilterOperator.Contains, item.ID); 
    var name = new Filter("NAME", FilterOperator.Contains, item.NAME); 
    filters.push(id); 
    filters.push(name); 
} 

var model = this.getOwnerComponent().getModel(); 
model.read("/assessments", { 
    filters: [new sap.ui.model.Filter(filters, false)], 
    success: function(odata) { 
     var results = odata.results; 
    } 
} 
+0

投稿する前に検索しますか?考えられるdupe:https://stackoverflow.com/a/41785632/3309799 –

答えて

1

私はあなたから理解できるものからの質問、私はあなたが

行1以下のように達成したいと考えている - "ID" と "NAME"

  • OR

行2 - "ID" AND "NAME"

  • OR

行3 - あなたは、ネストされたフィルタでパラメータオブジェクトで、引数を設定することによってそれを行うことができ、 "ID" と "NAME"

var table = this.byId("table"), 
    items = table.getSelectedItems(), 
    aFilters = []; 
for (var i = 0; i < items.length; i++) { 
    var item = items[i].getBindingContext().getObject(); 
    var oFilter = new Filter({ 
     filters:[ 
      new Filter("ID", FilterOperator.Contains, item.ID), 
      new Filter("NAME", FilterOperator.Contains, item.NAME) 
     ], 
     and : true 
    }) 
    aFilters.push(oFilter); 
} 

var model = this.getOwnerComponent().getModel(); 
model.read("/assessments", { 
    filters: [new sap.ui.model.Filter(aFilters, false)], 
    success: function(odata) { 
     var results = odata.results; 
    } 
} 
関連する問題