来自扩展的SAPUI5表绑定在bindelement中执行

时间:2018-02-02 10:50:22

标签: odata sapui5

我正在尝试SAPui5中的概念验证来检查搜索字段的内容,将结果绑定到另一个字段,如果我没有任何结果,则显示已写入消息字段的错误消息我的odata 到目前为止,我以这种方式取得了成功

this.getView().bindElement({
  path: "/ExcSet('" + evt.getSource().getValue() + "')",
  model: "EXCEPTION",
  events: {
    dataReceived: function(response) {
      if (response.mParameters.data.Message !== '') {
        MessageBox.error(response.mParameters.data.Message);                            
      } 
    }
}

(如果有人知道怎么做更好的方法,因为使用mParameters不是最好的方法,欢迎使用)

现在,我想扩展我的odata调用扩展导航以显示结果表,不使用我已经使用过的另一个odata调用,所以这是我的代码到目前为止:

eanSearch: function(evt) {
    var oView = this.getView();
    var oTemplate = new ColumnListItem({
      cells: [
        new Text({
            text: "{Volum}"
        }),
        new Text({
            text: "{Voleh}"
        })
        ]
    });
    this.getView().bindElement({
      path: "/ExcSet('" + evt.getSource().getValue() + "')",
      model: "EXCEPTION",
      parameters: {
        expand: "ExcMarmNav"
      },
      events: {
        dataReceived: function(response) {
        if (response.mParameters.data.Message !== '') {
          MessageBox.error(response.mParameters.data.Message);
        } 
        }
      }
    });
    oView.byId("table").bindItems({
      path : '/ExcMarmNav',
      template : oTemplate
    });
}

展开的数据会加载到我的回复中,如您所见

    data: {
  "ExcSet('5410366897766')": {
  "__metadata": {
  "id": "http://...:8000/sap/opu/odata/sap/ZEXCEPTION_SRV/ExcSet('5410366897766')",
  "uri": "http://...:8000/sap/opu/odata/sap/ZEXCEPTION_SRV/ExcSet('5410366897766')",
  "type": "ZEXCEPTION_SRV.Exc"
  },
  "Matnr": "000000000040000000",
  "Ean": "5410366897766",
  "Message": "",
  "ExcMarmNav": {
    "__list": [
    "MarmSet(Matnr='40000000',Meinh='EA')"
    ]
  }
  },
  "MarmSet(Matnr='40000000',Meinh='EA')": {
  "__metadata": {
  "id": "http://...:8000/sap/opu/odata/sap/ZEXCEPTION_SRV/MarmSet(Matnr='40000000',Meinh='EA')",
  "uri": "http://...:8000/sap/opu/odata/sap/ZEXCEPTION_SRV/MarmSet(Matnr='40000000',Meinh='EA')",
  "type": "ZEXCEPTION_SRV.Marm"
  },
  "Matnr": "40000000",
  "Meinh": "EA",
  "Umrez": "1",
  "Umren": "1",
  "Eannr": "",
  "Ean11": "5410366897766",
  "Numtp": "HE",
  "Laeng": "20.000",
  "Breit": "20.000",
  "Hoehe": "10.000",
  "Meabm": "CM",
  "Volum": "4000.000",
  "Voleh": "CCM",
  "Brgew": "2.500",
  "Gewei": "KG",
  "Mesub": "",
  "Atinn": "0000000000",
  "Mesrt": "00",
  "Xfhdw": "",
  "Xbeww": "",
  "Kzwso": "",
  "Msehi": "",
  "BflmeMarm": "",
  "GtinVariant": "",
  "NestFtr": "0",
  "MaxStack": 0,
  "Capause": "0.000",
  "Ty2tq": ""
  }
}

但我不知道如何使用结果集将其绑定到表中,上面的代码无法正常工作,如果有人知道params用于我的绑定项,或者是否有其他方法可以使用做到了吗?

祝你好运

丹尼斯

2 个答案:

答案 0 :(得分:0)

我设法使用基于Odata模型响应的中间JSON模型来绑定我的表

eanSearch: function(evt) {
  var oView = this.getView();
  this.getView().bindElement({
    path: "/ExcSet('" + evt.getSource().getValue() + "')",
    model: "EXCEPTION",
    parameters: {
      expand: "ExcMarmNav"
    },
    events: {
        dataReceived: function(response) {
          if (response.mParameters.data.Message !== '') {
            MessageBox.error(response.mParameters.data.Message);
          } else {
            var model = new JSONModel({
            "items": response.mParameters.data.ExcMarmNav
            });             
            oView.setModel(model, "itemModel");
          }
      }
    }
});

这是XML视图:

<Table id="table" items="{itemModel>/items}">
  <columns>
    <Column><Label/></Column>
    <Column><Label/></Column>
  </columns>
  <ColumnListItem>
    <cells>
      <Text text="{itemModel>Volum}"/>
      <Text text="{itemModel>Voleh}"/>
    </cells>
  </ColumnListItem>
</Table>

工作正常,但我想避免使用中间JSON模型并直接绑定表中的响应数组

答案 1 :(得分:0)

好的,我设法找到了我需要的东西:)

所以控制器:

eanSearch: function(evt) {
  var oView = this.getView();
  this.getView().bindElement({
    path: "/ExcSet('" + evt.getSource().getValue() + "')",
    model: "EXCEPTION",
    parameters: {
      expand: "ExcMarmNav"
    },
    events: {
    dataReceived: function(response) {
      if (response.mParameters.data.Message !== '') {
        MessageBox.error(response.mParameters.data.Message);
      } 
    }
  }
});

}

和视图:

<Table noDataText="No Data" items="{EXCEPTION>ExcMarmNav}">
  <columns>
    <Column><Label/></Column>
    <Column><Label/></Column>
  </columns>
  <items>
    <ColumnListItem>
      <cells>
        <Text text="{EXCEPTION>Volum}"/>
        <Text text="{EXCEPTION>Voleh}"/>
      </cells>
    </ColumnListItem>
  </items>
</Table>