SAPUI5 表绑定项目在绑定元素中执行扩展

问题描述 投票:0回答:2

我正在尝试在 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": ""
  }
}

但是我不知道如何使用结果集将其绑定到表中,我上面的代码不起作用,如果有人知道用于我的绑定项的参数,或者是否有其他方法可以做到这一点?

致以诚挚的问候

丹尼斯

odata sapui5
2个回答
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 模型并直接绑定表中响应的数组


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>
© www.soinside.com 2019 - 2024. All rights reserved.