OData liaison avec $expand
Nous lier un OData url UI5 de ODataModel
https://sapes1.sapdevcenter.com/sap/opu/odata/sap/ZCD204_EPM_DEMO_SRV/BusinessPartners('0100000000')/SalesOrders/?$expand=SalesOrderItems
Nous sommes capable de se lier au niveau de la racine des éléments qui appartiennent à chaque SalesOrder. Cependant, nous sommes en cours d'exécution dans problème dans le cas de la liaison de données de SalesOrderItems
qui sont à un enfant de SalesOrder
.
Nous ne sommes pas en mesure de lier SalesOrderItems champs à l'un de nos objets. Nous avons essayé en utilisant {SalesOrderItems/results/QuantityUnit}
, {SalesOrderItems/QuantityUnit}
sans beaucoup de chance.
Pouvez-vous s'il vous plaît suggérer des alternatives?
Il y a 1..m cardinalité entre SalesOrder et SalesOrderItem
//model of oData
var model = sap.ui.model.odata.ODataModel("proxy/https/sapes1.sapdevcenter.com/sap/opu/odata/sap/ZCD204_EPM_DEMO_SRV/",true,'username','password');
//app is defined in index.html here we are setting model to the app.
App.setModel(model);
//create a table
var pastOrder_S3= new sap.m.Table("PastOrder_S3",{
inset:true,
//visibleRowCount: 2,
firstVisibleRow: 2,
fixedColumnCount: 2,
columns:[
new sap.m.Column({
header:new sap.m.Label("item").setText("Items"),
hAlign:"Left",
width:"20px",
demandPopin:true,
popinDisplay:"Block",
minScreenWidth: sap.m.ScreenSize.Medium
}),
new sap.m.Column({
header:new sap.m.Label("orderdetail").setText("OrderDetails"),
hAlign:"Left",
width:"200px",
demandPopin:true,
popinDisplay:"Block",
minScreenWidth: sap.m.ScreenSize.Medium
})
});
//create a template to bind into the table using model.
var oTemplate_S3= new sap.m.ColumnListItem({
type: sap.m.ListType.Active,
cells: [
new sap.m.Text({
text:"{ProductName} \n {ProductID}"
}),
new sap.m.Text({
text:"OrderId: {SalesOrderID} \n {DeliveryDate} \n {TotalSum}{Currency}"
})
]
});
//bind into the table.
`pastOrder_S3.bindAggregation("items","BusinessPartners('BusinessPartnerId')/SalesOrders/?$expand=SalesOrderItems",oTemplate_S3);`
Ici, nous avons un enfant de la propriété nommée "SalesOrderItems" nous avons besoin de lire les propriétés à l'intérieur de la salesorderitems.
- S'il vous plaît partager le code que vous utilisez pour définir le OData modèle.
Vous devez vous connecter pour publier un commentaire.
Lors de la liaison de l'agrégation à un OData collection, la
expand
paramètre (et d'autres paramètres pour que ce soit) doit être administré séparément, ne fait pas partie de la collection d'URI.En un mot, vous aurez à effectuer les opérations suivantes:
Découvrez la bindAggregation et la ODataListBinding constructeur documentation pour plus de détails.
Un autre problème que vous devrez faire face est que vous avez cette 1:n la cardinalité entre les SaleOrder et la SaleOrderItems. Cela signifie que vous aurez seulement être en mesure d'utiliser cette propriété de navigation pour lier une agrégation et pas directement un bien (si vous avez besoin d'avoir quelque chose comme un tableau dans un autre tableau).
Vous aurez à définir clairement ce qui doit être affiché à partir de la SaleOrderItems être en mesure de "aplatir" c' (par exemple, faire un regroupement, ou de choisir le premier, etc). Ceci devrait impliquer que des modifications doivent être apportées dans le service OData ou vous devrez utiliser soit un contrôle personnalisé dans UI5 ou un JSONModel au lieu de /en collaboration avec le OData un.