如何在SAPUI5 XML视图中将JSON数据显示为表的源

时间:2016-11-14 07:07:56

标签: json xml data-binding sapui5

我有一个SAPUI5 splitApp应用程序,可以在几个不同的场合收集单个客户端的信息并插入到数据库中。因此数据库表可能如下所示; clients information

我有另一个表格,其中包含客户的联系方式,因此我在解决方案provided here的帮助下使用了两个表来创建嵌套的JSON。我的JSON看起来像这样;

{
  "contacts": [{
    "clientno": "100",
    "firstname": "Joe",
    "secondname": "John",
    "note": "Knocking vehicle",
    "email": "dg@gmail.com",

    "feed": [{
      "clientno": "100",
      "amount": "8745",
      "reason": "Day 1 of xx"
    }, {
      "clientno": "100",
      "amount": "7823",
      "reason": "Day 2 of xx"

    }, {
      "clientno": "100",
      "amount": "9000",
      "reason": "Day 3 of xx"
    }]
  }, {
    "clientno": "104",
    "firstname": "Gatlin",
    "secondname": "Joe",
    "note": "Overspeeding",
    "email": "mj@mworia.com",

    "feed": [{
      "clientno": "104",
      "amount": "4556",
      "reason": "Day 1 of xx"

    }, {
      "clientno": "104",
      "amount": "9000",
      "reason": "Day 2 of xx"
    }]
  }]
}

firstname,secondname和clientno显示在主视图上,其余显示在详细视图上。在详细视图中,我有一个表,我想显示每个客户端的所有提要。我在表的详细信息视图中有以下代码,但是,只显示了每个客户端的第一个提要。

<Table>
  <columns>
    <Column>
      <header>
        <Label text="Amount" />
      </header>
    </Column>
    <Column minScreenWidth="Tablet" demandPopin="true" hAlign="Center">
      <header>
        <Label text="Reason" />
      </header>
    </Column>

  </columns>
  <ColumnListItem>
    <cells>
      <Text text="{feed/0/amount}" />
      <Text text="{feed/0/reason}" />
    </cells>
  </ColumnListItem>
</Table>

请注意,如何显示每个客户端的所有Feed,例如,客户端100的表将有3行。我只有一个。我错过了什么?请帮忙。

我已经阅读了几篇过去的帖子,但我无法找到一篇正在寻找的内容。 thisthisand this too以及其他几个

谢谢,

1 个答案:

答案 0 :(得分:0)

您需要更改视图中的绑定,并根据所选客户设置绑定上下文。

首先,更改聚合绑定。这告诉绑定使用feed数组作为数据源。然而,这不会显示任何内容,因为您刚刚声明您的对象具有feed属性但没有绑定上下文UI5不知道在哪里可以找到它。

<Table id="feeds" items="{feed}">

第二:更改属性绑定。在这里,您只需声明要显示的Feed属性。 UI5自动知道它们可以在feed数组中找到。

<Text text="{amount}" />
<Text text="{reason}" />

第三步:将绑定上下文设置为相应的客户。您可以将绑定上下文视为指向数据的指针。在您的情况下,绑定上下文将类似于:contacts/0(指向第一个客户)。绑定上下文有一个前导斜杠,这非常重要。 UI5现在将查看联系人中第一个条目的上下文中的供稿。

var table = this.byId("feeds"); 
table.bindElement("/contacts/0");

有关使用JSON模型绑定语法的更多详细信息,请参见here