2017-06-15 10 views
0

マスター詳細UI5アプリケーションを作成しています。私は、ODataサービスを呼び出していて、マスターリストに設定されたエンティティからのデータを表示することができます。詳細セクションでは、フォームを作成しており、ナビゲーションエンティティセットからのデータを表示したいと考えています。ナビゲーションエンティティを1回の呼び出しで呼び出すことはできないことを知りになったので、どうすればいいのですか?ODataサービスのナビゲーションプロパティからデータを取得する方法

<EntityType Name="Product" sap:content-version="1"> 
    <Key> 
     <PropertyRef Name="ProductID"/> 
    </Key> 
    <Property Name="ProductID" Type="Edm.String" Nullable="false" MaxLength="10" sap:label="Product ID" sap:updatable="false"/> 
    <Property Name="TypeCode" Type="Edm.String" Nullable="false" MaxLength="2" sap:label="Type Code"/> 
    <NavigationProperty Name="ToSalesOrderLineItems" Relationship="GWSAMPLE_BASIC.Assoc_Product_SalesOrderLineItems" FromRole="FromRole_Assoc_Product_SalesOrderLineItems" ToRole="ToRole_Assoc_Product_SalesOrderLineItems"/> 
    <NavigationProperty Name="ToSupplier" Relationship="GWSAMPLE_BASIC.Assoc_BusinessPartner_Products" FromRole="ToRole_Assoc_BusinessPartner_Products" ToRole="FromRole_Assoc_BusinessPartner_Products"/> 
</EntityType> 

ToSupplierのデータを示したいと思います。

答えて

2

まあ、実際には1回のリクエストでそれを得ることができます。

があなたの「ビジネスパートナー」の実体は、名前のフィールドがあり、このような何かを表示したいと言うことができます:

<Panel> 
    <Text id="txtProductID" text="Product ID Comes Here"/> 
    <Text id="txtSupplierName" text="Supplier BP Name Comes Here"/> 
</Panel> 

あなたは何ができるか、と、(相対バインディング付き)定期的な結合構文を使用することですそれは通常、詳細ビューで行われます。

<Panel> 
    <Text id="txtProductID" text="{ProductID}"/> 
    <Text id="txtSupplierName" text="{ToSupplier/Name}"/> 
</Panel> 

あなたが直接これをしようとする場合は、「仕入先名」テキストコントロールには何も得られないだろう。これは、デフォルトでは、拡張OData Specの4.6章を参照してください)をToSupplierナビゲーションに要求していないためです。

bindElementを詳細ビューで呼び出す場合は、これを行う必要があります(デフォルトテンプレートでは、詳細コントローラの_bindViewというメソッドで行われます)。拡大するので、同様the bindingにパラメータ自体として渡すことができます。

oView.bindElement({ 
    path: sMyPathToAProduct, 
    parameters: { 
     expand: "ToSupplier" 
    } 
}); 

あなたが好きなように多くのナビゲーションを展開し、(あなたがそのパラメータにカンマ区切りリストとしてナビゲーションを渡すことができます好きなように深くすることができます)。ここでの唯一の制約は、バックエンドが展開をサポートする必要があることです。展開の深さにはいくつかの制限があります。

+0

もう1つの質問:どうすればマスターコントローラのToSupplierから値を取得したいのですが、それをコンソールで印刷したいのですか? –

+0

あなたは2つのオプションがあります:マスターリストのすべてのアイテムの 'ToSupplier'ナビゲーションを展開するか(アイテムをバインドするときにXMLで直接行うことができます。例えば' items = "{path: '/ ProductSet '、パラメータ:{展開:' ToSupplier '}} ")。次に、アイテムのバインディングコンテキストからデータ自体を取得することができます。または、データが必要なときにプログラムで読み込むこともできます([ODataModel#read](https://openui5.hana.ondemand.com/#docs/api/symbols/sap.ui.model.odata.v2を参照)。 ODataModel.html#read))。 –

関連する問題