You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SAPUI5表格中绑定OData模型的子级的子级数据?

SAPUI5 子级数据绑定实现指南

嘿,我来帮你搞定SAPUI5里的子级数据绑定!你已经把主entity集合绑定到表格了,现在要展示每个条目里的childL1数组对吧?这里有两种实用的实现方式,你可以根据需求选:

方式一:嵌套表格(主行内直接显示子数据)

这种方式适合子数据量不大、需要直接展示的场景。核心思路是在主表格的ColumnListItem里嵌入一个子表格,子表格的数据源直接绑定到当前主条目下的childL1数组。

视图代码示例(XML)

<Table id="myTable" items="{/entity}">
  <columns>
    <Column><Text text="Value A"/></Column>
    <Column><Text text="Value B"/></Column>
    <Column><Text text="子级数据"/></Column>
  </columns>
  <items>
    <ColumnListItem>
      <cells>
        <Text text="{valueA}"/>
        <Text text="{valueB}"/>
        <!-- 子表格绑定childL1数组 -->
        <Table items="{childL1}" mode="None">
          <columns>
            <Column><Text text="Value C"/></Column>
            <Column><Text text="Value D"/></Column>
          </columns>
          <items>
            <ColumnListItem>
              <cells>
                <Text text="{valueC}"/>
                <Text text="{valueD}"/>
              </cells>
            </ColumnListItem>
          </items>
        </Table>
      </cells>
    </ColumnListItem>
  </items>
</Table>

控制器绑定代码

如果你的childL1是OData的导航属性,一定要在主表绑定的时候加上expand参数,确保子数据被预加载(避免延迟加载导致的空数据):

this.myTable = this.getView().byId("myTable");
this.myTable.bindAggregation("items", {
  path: "/entity",
  parameters: {
    expand: "childL1" // 关键:预加载子级导航属性数据
  }
});

方式二:可展开行项目(点击主行显示子数据)

如果子数据量较大,或者想让界面更简洁,可以用可展开的行,点击主行后才展示子数据。

视图代码示例(XML)

<Table id="myTable" items="{/entity}" expandable="true">
  <columns>
    <Column><Text text="Value A"/></Column>
    <Column><Text text="Value B"/></Column>
  </columns>
  <items>
    <ColumnListItem>
      <cells>
        <Text text="{valueA}"/>
        <Text text="{valueB}"/>
      </cells>
      <!-- 展开区域显示子数据 -->
      <detail>
        <Table items="{childL1}" mode="None">
          <columns>
            <Column><Text text="Value C"/></Column>
            <Column><Text text="Value D"/></Column>
          </columns>
          <items>
            <ColumnListItem>
              <cells>
                <Text text="{valueC}"/>
                <Text text="{valueD}"/>
              </cells>
            </ColumnListItem>
          </items>
        </Table>
      </detail>
    </ColumnListItem>
  </items>
</Table>

关键注意点

  • 绑定路径{childL1}是相对路径,因为主表的每个条目已经处于/entity的子上下文下,所以直接写属性名即可。
  • 如果你的OData服务需要显式请求子数据,一定要在主绑定的parameters里加上expand: "childL1",否则子数据会延迟加载(可能需要用户交互后才发起请求)。
  • 如果你用的是JSONModel而不是ODataModel,不需要expand参数,直接绑定即可。

内容的提问来源于stack exchange,提问作者Kawamoto Takeshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:58:15