2017-05-16 1 views
0

J'ai ce modèle OData:Comment afficher un objet OData qui est à l'intérieur sur un autre objet OData en vue xml? [Sapui]

<EntityType Name="Request"> 
<Key> 
<PropertyRef Name="Id"/> 
</Key> 
<Property Name="AirTicketBuyer" Type="Edm.String" Nullable="true" MaxLength="50"/> 
<Property Name="AirTicketBuyerEmail" Type="Edm.String" Nullable="true" MaxLength="50"/> 
<Property Name="BusTicketBuyer" Type="Edm.String" Nullable="true" MaxLength="50"/> 
<Property Name="BusTicketBuyerEmail" Type="Edm.String" Nullable="true" MaxLength="50"/> 
<Property Name="CostCenter" Type="Edm.Int32" Nullable="false"/> 
<Property Name="Created" Type="Edm.DateTime" Nullable="false"/> 
<Property Name="Currency" Type="Edm.Int32" Nullable="false"/> 
<Property Name="Department" Type="Edm.Int32" Nullable="false"/> 
<Property Name="DepartureDate" Type="Edm.DateTime" Nullable="false"/> 
<Property Name="DepartureRoute" Type="Edm.String" Nullable="false" MaxLength="100"/> 
<Property Name="DepartureTransportationType" Type="Edm.String" Nullable="false" MaxLength="1"/> 
<Property Name="Destination" Type="Edm.String" Nullable="false" MaxLength="128"/> 
<Property Name="DestinationType" Type="Edm.String" Nullable="false" MaxLength="1"/> 
<Property Name="ExpirationDate" Type="Edm.DateTime" Nullable="false"/> 
<Property Name="Id" Type="Edm.Int32" Nullable="false"/> 
<Property Name="IdApplicant" Type="Edm.Int32" Nullable="true"/> 
<Property Name="IdCompany" Type="Edm.Int32" Nullable="false"/> 
<Property Name="IdUser" Type="Edm.Int32" Nullable="false"/> 
<Property Name="Reason" Type="Edm.String" Nullable="false" MaxLength="200"/> 
<Property Name="RequestCode" Type="Edm.String" Nullable="false" MaxLength="15"/> 
<Property Name="RequestFatherId" Type="Edm.Int32" Nullable="true"/> 
<Property Name="RequestStatus" Type="Edm.Int32" Nullable="false"/> 
<Property Name="RequestType" Type="Edm.Int32" Nullable="false"/> 
<Property Name="ReturnDate" Type="Edm.DateTime" Nullable="false"/> 
<Property Name="ReturnRoute" Type="Edm.String" Nullable="false" MaxLength="100"/> 
<Property Name="ReturnTransportationType" Type="Edm.String" Nullable="false" MaxLength="1"/> 
<Property Name="SapCodeApplicant" Type="Edm.String" Nullable="true" MaxLength="6"/> 
<Property Name="SapCodeUser" Type="Edm.String" Nullable="true" MaxLength="6"/> 
<Property Name="StartFlowDate" Type="Edm.DateTime" Nullable="false"/> 
<Property Name="TipoReq" Type="Edm.String" Nullable="true" MaxLength="2"/> 
<Property Name="TotalAdvance" Type="Edm.Decimal" Nullable="false" Precision="12" Scale="2"/> 
<NavigationProperty Name="ApprovalsRequestDetails" Relationship="rva-persistence.ApprovalsRequest_Request_Many_ZeroToOne0" FromRole="Request" ToRole="ApprovalsRequest"/> 
<NavigationProperty Name="CostCenterDetails" Relationship="rva-persistence.Request_CostCenter_Many_ZeroToOne0" FromRole="Request" ToRole="CostCenter"/> 
<NavigationProperty Name="CurrencyDetails" Relationship="rva-persistence.Currency_Request_One_Many0" FromRole="Request" ToRole="Currency"/> 
<NavigationProperty Name="DepartmentDetails" Relationship="rva-persistence.Department_Request_One_Many0" FromRole="Request" ToRole="Department"/> 
<NavigationProperty Name="ExpenseAdvanceDetails" Relationship="rva-persistence.ExpenseAdvance_Request_Many_ZeroToOne0" FromRole="Request" ToRole="ExpenseAdvance"/> 
<NavigationProperty Name="CompanyDetails" Relationship="rva-persistence.Company_Request_One_Many0" FromRole="Request" ToRole="Company"/> 
<NavigationProperty Name="UsersDetails" Relationship="rva-persistence.Users_Request_One_Many0" FromRole="Request" ToRole="Users"/> 
<NavigationProperty Name="PassengerDetails" Relationship="rva-persistence.Passenger_Request_Many_ZeroToOne0" FromRole="Request" ToRole="Passenger"/> 
<NavigationProperty Name="ReportDocumentDetails" Relationship="rva-persistence.ReportDocument_Request_Many_ZeroToOne0" FromRole="Request" ToRole="ReportDocument"/> 
<NavigationProperty Name="RequestStatusDetails" Relationship="rva-persistence.Request_RequestStatus_Many_ZeroToOne0" FromRole="Request" ToRole="RequestStatus"/> 
<NavigationProperty Name="RequestTypeDetails" Relationship="rva-persistence.RequestType_Request_One_Many0" FromRole="Request" ToRole="RequestType"/> 
</EntityType> 

Comme vous pouvez le voir, tis objet ont un autre objet OData en lui (utilisateurs):

<EntityType Name="Users"> 
<Key> 
<PropertyRef Name="Id"/> 
</Key> 
<Property Name="Area" Type="Edm.String" Nullable="true" MaxLength="10"/> 
<Property Name="DocumentType" Type="Edm.Int32" Nullable="true"/> 
<Property Name="Email" Type="Edm.String" Nullable="false" MaxLength="100"/> 
<Property Name="ErpId" Type="Edm.String" Nullable="true" MaxLength="20"/> 
<Property Name="ExpirationDate" Type="Edm.DateTime" Nullable="true"/> 
<Property Name="Id" Type="Edm.Int32" Nullable="false"/> 
<Property Name="IdCompany" Type="Edm.Int32" Nullable="false"/> 
<Property Name="IdNumber" Type="Edm.String" Nullable="true" MaxLength="30"/> 
<Property Name="JoinDate" Type="Edm.DateTime" Nullable="false"/> 
<Property Name="Password" Type="Edm.String" Nullable="false" MaxLength="100"/> 
<Property Name="Status" Type="Edm.String" Nullable="false" MaxLength="1"/> 
<Property Name="UserAlias" Type="Edm.String" Nullable="false" MaxLength="60"/> 
<Property Name="UserName" Type="Edm.String" Nullable="false" MaxLength="100"/> 
//Navigations 
</EntityType> 

J'ai une page maître-détail. J'ai une liste d'objets maîtres (de type Demande) et sur la page de détail où je peux voir leurs propriétés. Je peux voir toutes les propriétés sauf la propriété de l'objet "Utilisateurs".

D'abord, je créé un objet qui contient JSONModel objet de type « demande »:

var jsonModelObject = new JSONModel(requestObject, false); 

this.setModel(jsonModelObject, "detailView"); 

Dans ma page détail Je ne peux pas voir les propriétés de l'objet « utilisateurs ».

Cela fonctionne:

<Input fieldGroupIds="datos_suscripcion" value="{detailView>/TipoReq}" 
         placeholder="Código..." 
         id="inTipoReq"/> 

Cela ne fonctionne pas:

1er chemin:

<Input fieldGroupIds="datos_suscripcion" value="{detailView>/UsersDetails>/UserName}" 
         placeholder="Usuario..." 
         id="inUsuario"/> 

2ème façon:

<Input fieldGroupIds="datos_suscripcion" value="{detailView/UsersDetails>/UserName}" 
         placeholder="Usuario..." 
         id="inUsuario"/> 

Merci pour vos réponses :).

MISE À JOUR 1

@Alan, j'essaie cette façon:

Première:

<VBox items="{path : 'detailView>/', parameters: {expand: 'UsersDetails'} }"> 
       <Input fieldGroupIds="datos_suscripcion" value="{UserName}" 
        placeholder="Usuario..." 
        id="inUsuario"/> 
      </VBox> 

Deuxième:

<VBox items="{path : 'detailView>/', parameters: {expand: 'UsersDetails'} }"> 
        <Input fieldGroupIds="datos_suscripcion" value="{detailView>/UsersDetails/UserName}" 
         placeholder="Usuario..." 
         id="inUsuario"/> 
       </VBox> 

Aucun d'entre eux fonctionne .. . Curieusement, le chemin d'Alan et mes façons de faire cette entrée apparaît plusieurs fois dans ma page lorsque je sélectionne un objet maître.

Ma page est similaire à l'exemple Master-Deail. Ma page consiste en une liste d'objets maîtres. Lorsque je sélectionne un objet maître, ses propriétés s'affichent sur la page de détail. J'utilise un événement de presse pour montrer les propriétés sur la page de détails. Pour cela, la demande n'est pas déclenchée ... Here vous pouvez ver par exemple avec plus de détails.

Répondre

0

Il n'est pas possible d'accéder directement à la propriété de navigation. Vous pouvez faire une solution de contournement comme suit -

<VBox items="{path : 'detailView>/', parameters: {expand: 'UsersDetails'} }"> 
    <Label text="{destination}"></Label> 
    <VBox items={UsersDetails}> 
     <Label text="{UserName}"></Label> 
    </VBox> 
</VBox> 

Je pense que la question est que lorsque vous avez exécuté EXPAND, le résultat ressemblera à ceci -

{"AirTicketBuyer":"xxxx", 
    .., 
    "TotalAdvance";"xxxx", 
    "UserDetails": { 
     "results":[{ 
      "UserName": "this is an user name", 
      ... 
     }] 
    }} 

Vous avez donc besoin de deux modèles pour la course la liaison. Si cela ne fonctionne pas, essayez d'ajouter detailView>/avant chaque liaison.

+0

Cela ne fonctionne pas –

+0

pourriez-vous essayer d'utiliser cette extension? si ça ne fonctionne pas, ouvrez le devtools et vérifiez quelle requête est envoyée au backend (dans l'onglet réseau) – Alan

+0

J'ai mis à jour ma question –