我是SAPUI5的新手,寻求解决一个问题的建议。我的要求是这样的:
第1页显示了产品上的XMLview列表。 第2页显示仓库中此产品的存储仓上的XMLview列表。 第3页然后显示存储仓的详细信息。
我创建了一个oDATA,两个实体类型:Product和Bin,都实现了GetEntitySet,我认为oDATA结果很好。我的问题是在第二个XMLview页面上,我很难在sap.m.list上设置项目...我的XML如下所示,问题是所有硬编码,我试图实现的是传递来自产品/工厂/仓库的第1页...请告知我如何解决此动态值分配。非常感激。
<Page
title="Warehouse Storage Bin List"
showNavButton="true"
navButtonPress="handleNavButtonPress" >
<List items="{/Bin?$filter=Lgnum eq 'XXX' and Matnr eq 'XXXXXX' and Werks eq 'XXXX'}">
<ObjectListItem type="Active"
press="handleListItemPress"
title="{StgeBin}" intro="{StgeType}" number="{Stock}"
numberUnit="">
<attributes ObjectAttribute=""></attributes>
</ObjectListItem>
</List>
</Page>
BR,J
答案 0 :(得分:0)
我假设您已经知道如何在sap.m中的Pages之间导航。如果不是这是您要搜索的主要方法(使用sap.m.App
,如果您使用sap.m.SplitApp
则还有更多方法):
to(sPageId, sTransitionName, oData, oTransitionParameters)
注意参数oData
-
该可选对象可以携带应该可用于目标页面的任何有效载荷数据。目标页面上的“beforeShow”事件将此数据对象包含为“data”属性。
因此,假设您在第一个视图上使用sap.m.List来触发导航到第二个视图。它看起来像这样:
View1.view.xml
<Page title="Products">
<List items="{/Products}" selectionChange="onSelectionChange">
<StandardListItem title="{title}" />
</List>
</Page>
View1.controller.js
onSelectionChange : function(oEv) {
var oItem = oEv.getParameter("listItem");
var oApp = // get your App
// Binding path will be something like "/Products/4" (fifth item selected)
oApp.to("view2", "slide", { path : oItem.getBindingContextPath() })
}
View2.controller.js
onInit : function() {
var self = this;
this.getView().addEventDelegate({
onBeforeShow: function(oEv) {
var detailBindingPath = oEv.data.path;
// establish view2 bindings based on the selected binding path
var oList = self.getView().byId("List");
oList.bindItems(detailBindingPath +"/Bin", <YOUR_TEMPLATE>, null, [
new sap.ui.model.Filter("Lgnum", sap.ui.model.FilterOperator.EQ, 'XXX'),
new sap.ui.model.Filter("Matnr", sap.ui.model.FilterOperator.EQ, 'XXXXXX'),
new sap.ui.model.Filter("Werks", sap.ui.model.FilterOperator.EQ, 'XXXX')
]);
}
});
}
您必须在代码中建立绑定,因为在视图创建期间您不知道绑定路径。
希望我得到你想做的事。没有运行代码,所以如果你遇到问题请告诉我。
BR 克里斯