Ich habe eine Liste mit Elementen. Nach einem Klick möchte ich einen neuen Dialog öffnen und ihn mit Detailinformationen über das angeklickte Objekt verknüpfen.Dynamische Datenbindung mit Dialog
Meine Datenquelle ist eine SAP-HANA-Datenbank mit einer OData-Schnittstelle. Die Schnittstelle wie folgt aussieht:
Table/Path: Items
|ID|NAME|PRICE|ITEM_DETAILS (Navigation Property)|
Table/Path: ItemsDetails
|ID|ITEM_ID|...|
Die Liste eine Bindung an Items
hat, die funktioniert gut. Mit einem Klick möchte ich meinen Dialog an die Navigationseigenschaft ITEM_DETAILS
binden, aber die neue Bindung funktioniert nicht. Der Dialog ist weiterhin bindend/zeigt den "alten" Pfad Items
anstelle von ItemsDetails
an.
Das Dialogfragment:
<core:FragmentDefinition
xmlns="sap.m"
xmlns:core="sap.ui.core">
<SelectDialog
id="detailInformation"
noDataText="No data..."
title="{item}">
<StandardListItem
title="{ID}"
description="{FREQUENCY}"
type="Active" />
</SelectDialog>
</core:FragmentDefinition>
Der Event-Handler:
if (!this.selectLoadProfile) {
this.selectLoadProfile = sap.ui.xmlfragment(this.getView().getId(), "de.xxx.view.fragment.Dialog", this);
this.getView().addDependent(this.selectLoadProfile);
this.selectLoadProfile.bindElement("ITEM_DETAILS");
}
this.selectLoadProfile.open();
Kann mir jemand sagen, wie ich dynamisch die Daten geladen werden können?
Okay, jetzt bekomme ich den richtigen Weg. Aber die Details sind immer noch falsch. Die Bindung möchte nicht aktualisiert werden. Wenn ich das '..getModel(). Refresh()' verwende, wird nur die "Eltern" Ansicht aktualisiert. Es sieht so aus, als ob das Fragment vollständig außerhalb des Controls liegt. – Tobias
Haben Sie Ihren ODataModel bindingMode durch setDefaultBindingMode (sap.ui.model.BindingMode.TwoWay) auf ToWay gesetzt? – Allen
Ja, jetzt habe ich ...;) Aber das Problem besteht immer noch. Ich habe den UI5 Inspector für Chrome gefunden und herausgefunden, dass der bindingContext null ist, während meine Arbeitslisten einen bindingContext haben. Könnte das das Problem sein? – Tobias