参数从SAPUI5上的一个XMLview(列表)传递到另一个XMLview(列表)

时间:2014-10-17 18:22:58

标签: sapui5

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

1 个答案:

答案 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 克里斯