在SAPUI5 XML视图中使用OData的导航属性

在SAPUI5 XML视图中使用OData的导航属性,odata,sapui5,Odata,Sapui5,假设有两个实体表,即Customer和Order,其中包含以下字段: 客户->Id,客户名称,订单Id 订单->Id,客户Id,订单名称 现在在Odata服务中,还定义了以下关联以及导航属性,即 "Customers" navigates ("Customer_Orders" as "HisOrders"); association "Customer_Orders" principal "Customers"("ID") multiplicity "1" dependent "Orders"(

假设有两个实体表,即Customer和Order,其中包含以下字段: 客户->Id,客户名称,订单Id 订单->Id,客户Id,订单名称

现在在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}和{CustomerName}


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

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

在XMLView中,您应该这样做:

<Table items="{
         path: '/Customers',
         parameters: {
           expand: 'Orders'
         }
       }">
我必须承认,我这样做并不是为了一对一的关系,但基本上应该是这样的。如果代码和metadata.xml仍然不起作用,请发布


Chris

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

在XMLView中,您应该这样做:

<Table items="{
         path: '/Customers',
         parameters: {
           expand: 'Orders'
         }
       }">
我必须承认,我这样做并不是为了一对一的关系,但基本上应该是这样的。如果代码和metadata.xml仍然不起作用,请发布

溴 克里斯

试着这样做:

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

这里我假设
“Customer\u Orders”
是导航属性的名称,
“OrderID”
是导航目标的属性。

尝试以下方法:

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


这里,我假设
“Customer\u Orders”
是NavigationProperty的名称,
“OrderID”
是navigate目标的属性。

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