在SAPUI5表

时间:2018-04-05 04:10:09

标签: odata sapui5

我的oData服务中有这个模型:

{
  "entity": [
    {
      "valueA": "ABC",
      "valueB": "DEF",
      "childL1": [
        {
          "valueC": "GHI",
          "valueD": "JKL"
        },
        {
          "valueC": "MNO",
          "valueD": "PQR"
        }
      ]
    },
    {
      "valueA": "ABC",
      "valueB": "DEF",
      "childL1": [
        {
          "valueC": "GHI",
          "valueD": "JKL"
        },
        {
          "valueC": "MNO",
          "valueD": "PQR"
        }
      ]
    }
  ]
}

请注意,对于我的“实体”集中的每个“孩子”,还有一个可能的'childL1'数组。

我在UI5中有表,我通过以下方式绑定控制器中的数据:

this.myTable.bindAggregation('items', {path: /entity, template: this.oTemplate});

这样可行,但表格显示:

Child1
Child2

但是,我想做的是:

/0/ChildL1/0
/0/ChildL1/0
/1/ChildL1/0
/1/ChildL1/0

所以,为此,我可以这样做:

this.myTable.bindAggregation('items', {path: /entity/childL1, template: this.oTemplate});

结果如预期。但是,我还需要在表格中显示valueA。由于我的绑定是在child1,我将无法获得/ entity / n / valueA。

我可以为此做些什么?如果childL1有'key',有没有办法回溯?或者我可以entity然后在表格中显示childL1吗?

2 个答案:

答案 0 :(得分:0)

由于您没有提到表格控件,例如您正在使用哪种控件 - sap.ui.table.Table或sap.m.Table。如果是" sap.ui.table.Table"您可以绑定单个列,如下所示

oTable.addColumn(new sap.ui.table.Column({
          label : new sap.m.Label({
            text : " "
          }),
          template : new sap.m.Text({
            maxLines : 1
          }).bindProperty("text", "valueA"),
          }));
 oTable.addColumn(new sap.ui.table.Column({
          label : new sap.m.Label({
            text : " "
          }),
          template : new sap.m.Text({
            maxLines : 1
          }).bindProperty("text", "childL1/valueC"),
          }));

像这样你可以添加任何不。具有不同路径的列但它们的父路径应该是相同的,然后最后你可以将主路径绑定到这样的表行 -

oTable.bindAggregation("rows", {
          path : "/entity"
        });

答案 1 :(得分:0)

如果是sap.m.Table,你可以这样做 -

new sap.m.Table({   items:{
                        path:"/entity",
                        template: new sap.m.ColumnListItem({
                            cells:[
                                new sap.m.Text({
                                    text:"{valueA}"
                                }),
                                new sap.m.Text({
                                    text: "{childL1/valueC}"
                                })
                            ]
                        })
                    }
                })