基于输入的OData读取动态滤波器

时间:2018-02-05 16:07:48

标签: odata sapui5

我需要通过OData-service发送过滤值,以填充包含相关条目的表。 所以基本上有输入字段,你可以选择例如" AA" (美国航空公司)为Carrier-ID。

因此,需要根据用户输入动态创建过滤器值。

我试过以下:

var aFilters = [
  new sap.ui.model.Filter({
    path: "Carrid",
    operator: sap.ui.model.FilterOperator.EQ,
    value1: "{selection>/Carrid}"
  })
];
oModel.read("/SFLIGHTSSet",{
  method: "GET",
  filters: aFilters,
  success: function(oData2, oResponse) {
    var oJSONModel = new sap.ui.model.json.JSONModel();
    oJSONModel.setData({
      modelData: oData2.results
    });
    oTable.setModel(oJSONModel);
    oTable.bindRows("/modelData");
  },
  error: function(oError) {
    console.log("Error!");
  }
});

但这不起作用 我收到后续请求:

  

"(Carrid eq' {selection> / Carrid}')"

因此绑定在过滤器创建中不起作用......

绑定是正确的,因为我可以在Label中以相同的方式使用它:

new sap.m.Label({
  text: "{selection>/Carrid}"
});

我研究了很多,并且知道人们在XML视图中遇到问题但是找不到JS-Views的任何解决方案。

1 个答案:

答案 0 :(得分:0)

我想你的问题就在于此 “{selection> / Carrid}”

以某种方式从控件中获取用户输入的值

var sCarrid= this.byId("MySelection").getBindingContext("selection").getProperty("Carrid");

并修改您的过滤器

var oFilters = [ new sap.ui.model.Filter("Carrid",
                            sap.ui.model.FilterOperator.EQ,
                            sCarrid) ];