sapui5表只显示相同的记录

Rad*_*dek 5 odata sapui5 sap-gateway

我创建了一个 Web 服务并尝试使用 SAPUI5 中的 oData 协议绑定数据。

我创建了一个表:

createContent : function(oController) {

      jQuery.sap.require("sap.ui.table.Table");

      //Create table control with properties

      var oTable = new sap.ui.table.Table({
          width : "100%",
          rowHeight : 50,
          title : "Lst of Items",
          selectionMode : sap.ui.table.SelectionMode.None
      });



      oTable.addColumn(new sap.ui.table.Column({
          label : new sap.ui.commons.Label({
          text : "PO Number"
          }),
          template : new sap.ui.commons.TextView({
          text : "{PoNumber}"
          }),
          }
      ));

      oTable.addColumn(new sap.ui.table.Column({
          label : new sap.ui.commons.Label({
          text : "Item"
          }),
          template : new sap.ui.commons.TextView({
          text : "{PoItem}"
          }),
          }
      ));

      //Filter values for a certain PO
      var aFilter = [];
      aFilter.push( new sap.ui.model.Filter("PoNumber", sap.ui.model.FilterOperator.EQ, "4500000043") );


      oTable.bindRows({
          path: "/PurchaseOrderItemCollection",
          filters: aFilter
          });


      return oTable;
Run Code Online (Sandbox Code Playgroud)

}

输出应如下所示:

PONumber          POItem
4500000043        0010
4500000043        0020
Run Code Online (Sandbox Code Playgroud)

但我得到的是:

PONumber          POItem
4500000043        0020
4500000043        0020
Run Code Online (Sandbox Code Playgroud)

因此它显示最后一项两次并且不显示第一项。如果我在 Web 服务代码中放置一个断点,那么它就会正确填充。

数据模型的创建方式如下:

var oModel = new sap.ui.model.odata.ODataModel(sServiceUrl, false, "user", "passw");
   sap.ui.getCore().setModel(oModel);
Run Code Online (Sandbox Code Playgroud)

eps*_*psi 2

我的理解是集合中的每个实体/条目都应该有一个唯一的 id <entry><id>...</id></entry>。就我而言,返回的集合没有为实体设置 id。因此,绑定的 ui 元素找到多个具有相同 id 的对象(在本例中为空 id),并最终显示最后找到的值。

即使所有实体的 id 相同,这也应适用。

如果您还没有找到问题所在,希望它能有所帮助。

谢谢,