【问题标题】:Using navigation property of OData in SAPUI5 XML view在 SAPUI5 XML 视图中使用 OData 的导航属性
【发布时间】:2016-05-18 20:38:23
【问题描述】:

假设有两个实体表,即 Customer 和 Order,具有以下字段: 客户-> Id、CustomerName、OrderId 订单-> Id、CustomerId、OrderName

现在在 Odata 服务中,还定义了以下关联以及导航属性,即

"Customers" navigates ("Customer_Orders" as "HisOrders");
association "Customer_Orders" principal "Customers"("ID") multiplicity "1"
dependent "Orders"("CustomerID") multiplicity "*"; 

在 webapp 中,myview.xml 中存在一个包含 3 列的表:CustomerId、CustomerName、OrderName。

我将行的绑定添加为items={/Customers} 对于列 CustomerId 和 CustomerName,我使用了以下内容:{CustomerId} and {CustomerName}

但是如何在 xml 视图本身中绑定 OrderName 列呢?

【问题讨论】:

  • 由于 *- 多重性(一个客户有多个订单),您不能在单个文本属性中绑定 OrderName。解决绑定后,您将获得一个数组而不是原始值。但是,您可以做的是显示(或导航到)一个单独的表,一旦从客户表中单击一行,该表仅显示与所选客户相关的订单(通过导航属性)。

标签: odata sapui5


【解决方案1】:

试试这个方法:

<Label text="Order ID"/>
<Text text="{OrderID}" objectBindings="{Customer_Orders}" />

这里我假设 "Customer_Orders" 是 NavigationProperty 的名称,"OrderID" 是导航目标的属性。

【讨论】:

    【解决方案2】:

    您必须使用 OData $expand 来获取 Order 实体和 Customer。我假设您的实体集称为“客户”和“订单”(通常是 CustomerSet 和 OrderSet)。

    在 XMLView 中你应该做某事。像这样:

    <Table items="{
             path: '/Customers',
             parameters: {
               expand: 'Orders'
             }
           }">
    

    然后你的列绑定如下:

    {Orders/OrderName}
    

    我必须承认,我没有为 1:1 的关系这样做,但它基本上应该像这样工作。如果仍然无法正常工作,请发布您的代码和 metadata.xml。

    BR 克里斯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多