Sapui5 带有对话框的动态数据绑定

Sapui5 带有对话框的动态数据绑定,sapui5,Sapui5,我有一张物品清单。单击后,我想打开一个新对话框,并将其绑定到有关单击项的一些详细信息 我的数据源是一个带有OData接口的SAP HANA数据库。界面如下所示: Table/Path: Items |ID|NAME|PRICE|ITEM_DETAILS (Navigation Property)| Table/Path: ItemsDetails |ID|ITEM_ID|...| 该列表绑定到项,效果良好。单击后,我想将对话框绑定到导航属性ITEM\u DETAILS,但新绑定不起作用。对话

我有一张物品清单。单击后,我想打开一个新对话框,并将其绑定到有关单击项的一些详细信息

我的数据源是一个带有OData接口的SAP HANA数据库。界面如下所示:

Table/Path: Items
|ID|NAME|PRICE|ITEM_DETAILS (Navigation Property)|

Table/Path: ItemsDetails
|ID|ITEM_ID|...|
该列表绑定到
,效果良好。单击后,我想将对话框绑定到导航属性
ITEM\u DETAILS
,但新绑定不起作用。对话框仍然绑定/显示到“旧”路径
Items
,而不是
ItemsDetails

对话框片段:

<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>

有人能告诉我如何动态加载数据吗

您的问题让我有点困惑,我从中了解到的是,单击列表项时,您的视图中有一个列表。打开了一个对话框,其中包含项目详细信息,这是项目的导航属性。下面是您正在尝试的代码

this.selectLoadProfile.bindElement("ITEM_DETAILS");
此语句不特定于要绑定的项目详细信息。请尝试以下绑定路径

this.selectLoadProfile.bindElement("ITEM(id)/ITEM_DETAILS");
由于上述语句处于条件
(!this.selectLoadProfile)
中,请确保每次都执行,以便元素的绑定应该更新


我希望这对你有用

一种方法是在Click事件处理程序中获取项目路径,并将ItemDetail路径绑定到对话框

onClick:function(oEvent) {
    var oControl = oEvent.getSource();
    var oItemPath = oControl.getBindingContext().getPath();
    var oItemDetailPath = oItemPath + "/ITEM_DETAILS";

    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(oItemDetailPath);
    this.selectLoadProfile.open();
}

好了,现在我走对了路。但细节仍然是错误的。绑定不希望更新。如果我使用
.getModel().refresh()
仅刷新“父”视图。看起来片段完全超出了控制范围..您是否通过setDefaultBindingMode(sap.ui.model.bindingMode.TwoWay)将ODataModel bindingMode设置为ToWay?是的,现在我有了…;)但问题依然存在。我找到了用于Chrome的UI5检查器,并发现bindingContext为null,而我的工作列表具有bindingContext。。这就是问题所在吗?不。我无法设定正确的路径。它不会更新:/
onClick:function(oEvent) {
    var oControl = oEvent.getSource();
    var oItemPath = oControl.getBindingContext().getPath();
    var oItemDetailPath = oItemPath + "/ITEM_DETAILS";

    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(oItemDetailPath);
    this.selectLoadProfile.open();
}