首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAPUI5 -如何绑定子实体的字段作为SAPUI5示例“批准采购订单”应用程序中的父实体的字段?

SAPUI5 -如何绑定子实体的字段作为SAPUI5示例“批准采购订单”应用程序中的父实体的字段?
EN

Stack Overflow用户
提问于 2016-04-25 14:20:01
回答 1查看 3.4K关注 0票数 1

在SAP Web IDE附带的SAP示例"Approve Purchase Order“应用程序中,如何将"Supplier”实体(子实体)的字段绑定到与"PurchaseOrder“(父)实体的字段相同的"Simple Form”UI容器控件中。在此示例中,有3个单独的模拟数据文件,分别对应于"Purchase Order“、"Purchase Order Items”和"Supplier“。采购订单与供应商的关联关系在metadata.xml中定义为1:1。

a) PurchaseOrder (仅适用于相关部分)

代码语言:javascript
复制
<EntityType Name="PurchaseOrder" sap:content-version="1" sap:is-thing-type="true">
    <Key>
        <PropertyRef Name="POId"/>
    </Key>
    <Property MaxLength="10" Name="POId" Nullable="false" Type="Edm.String" sap:creatable="false" sap:filterable="false"
        sap:label="Purchase Order ID" sap:updatable="false"/>
    <Property MaxLength="10" Name="OrderedById" Nullable="false" Type="Edm.String" sap:creatable="false" sap:filterable="false"
    <Property MaxLength="10" Name="SupplierId" Nullable="false" Type="Edm.String" sap:creatable="false" sap:filterable="false" sap:label="ID"
        sap:sortable="false" sap:updatable="false"/>

b)供应商(仅限相关部分)

代码语言:javascript
复制
<EntityType Name="Supplier" sap:content-version="1" sap:is-thing-type="true">
    <Key>
        <PropertyRef Name="Id"/>
    </Key>
    <Property MaxLength="10" Name="Id" Nullable="false" Type="Edm.String" sap:creatable="false" sap:filterable="false" sap:label="ID"
        sap:sortable="false" sap:updatable="false"/>
    <Property MaxLength="255" Name="Email" Nullable="false" Type="Edm.String" sap:creatable="false" sap:filterable="false" sap:label="E-Mail"
        sap:semantics="email" sap:sortable="false" sap:updatable="false"/>

c)协会

代码语言:javascript
复制
<Association Name="PurchaseOrderSupplier" sap:content-version="1" sap:label="Association: Supplier --&gt; Purchase Order">
    <End Multiplicity="1" Role="FromRole_PurchaseOrderSupplier" Type="EPM_REF_APPS_PO_APV_SRV.Supplier"/>
    <End Multiplicity="*" Role="ToRole_PurchaseOrderSupplier" Type="EPM_REF_APPS_PO_APV_SRV.PurchaseOrder"/>
    <ReferentialConstraint>
        <Principal Role="FromRole_PurchaseOrderSupplier">
            <PropertyRef Name="Id"/>
        </Principal>
        <Dependent Role="ToRole_PurchaseOrderSupplier">
            <PropertyRef Name="SupplierId"/>
        </Dependent>
    </ReferentialConstraint>
</Association>

视图的一部分(PurchaseOrderDetails.view.xml)如下所示。所有字段(电子邮件除外)都来自父实体PurchaseOrder。

代码语言:javascript
复制
<form:SimpleForm class="sapUiForceWidthAuto sapUiResponsiveMargin" columnsL="1" columnsM="1" emptySpanL="5" emptySpanM="5" id="poHeaderForm"
    labelSpanL="3" labelSpanM="3" layout="ResponsiveGridLayout" maxContainerCols="2" minWidth="1024" title="{i18n>xtit.formTitle}">
    <Label id="poIdFormLabel" text="{/#PurchaseOrder/POId/@sap:label}"/>
    <Text id="poIdForm" text="{POId}"/>
    <Label id="addressFormLabel" text="{/#PurchaseOrder/DeliveryAddress/@sap:label}"/>
    <Text id="addressForm" text="{DeliveryAddress}"/>
    <Label id="supplierEmailLabel" text="{/#Supplier/Email/@sap:label}"/>
    <Text id="supplierEmail" text="{/PurchaseOrder/Id/Email}"/>
</form:SimpleForm>

我尝试了许多排列来绑定来自供应商实体的字段,电子邮件,即: a) {/Id/Email},b) {path: 'Supplier' , parameters: {Select 'Email'}},但结果一直是一个空格。

请显示"Email“的正确绑定语法。

EN

回答 1

Stack Overflow用户

发布于 2016-04-25 18:47:13

您的metadata.xml代码段不包含指向供应商的NavigationProperty。因此,您的协会不被认可...你必须先修复你的metadata.xml。在此之后,您可以轻松执行以下操作:

代码语言:javascript
复制
<Text id="supplierEmail" binding="{Supplier}" text="{Email}"/>

这假设您的导航属性在您的PurchaseOrder实体中命名为您的供应商“NavigationProperty”。在这种情况下,我还建议您在绑定中使用$expand=Supplier,以便在相同的请求(针对PurchaseOrder的请求)中获取供应商数据,即如下所示:

代码语言:javascript
复制
items="{
    path: '/PurchaseOrderItems',
    parameters: {
        'expand': 'Supplier'
    }
}"

在此之后,您可以简单地使用此属性而不使用绑定属性,因为您已经“扩展”了:

代码语言:javascript
复制
<Text id="supplierEmail" text="{Supplier/Email}"/>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36833290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档