SAPUI5 ObjectPageLayout路由和绑定

2020-08-31 00:23发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我正在尝试以下方法:

在我的View上,我选择一个Extui ID,我希望在打开下一个View绑定时存在与所选安装相对应的绑定。

通常,当我需要这样做时,我使用诸如:

之类的路由
"名称":" View3",
 "模式":"/img/DonneesRelevesSet/View3/{G_CC},{G_SA},{G_Extui},{G_Anlage}",
 " titleTarget":"",
 " greedy":错误,
 " target":[" View3"]
 

下一步是在调用route时填充参数:

 onPressModif:函数(oEvent){
 var oCC = oEvent.getSource()。getCells()[0] .getText();
 var oSA = oEvent.getSource()。getCells()[8] .getText();
 var oExtui = oEvent.getSource()。getCells()[1] .getText();
 var oAnlage = oEvent.getSource()。getCells()[12] .getText();
 oNavigation.navTo(" View3",{
 G_CC:oCC,
 G_SA:oSA,
 G_Extui:oExtui,
 G_Anlage:oAnlage
 });
 },
 

没什么奢侈的。

使用包含表格表格的通常视图,很容易在onInit方法中绑定实体,但是在我的情况下,控制器中无法识别表格:

 onInit:函数(){
//在此示例中保留对任何已创建的sap.m.ViewSettingsDialog-s的引用
 this._mViewSettingsDialogs = {};
 var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
 如果(oRouter){
 oRouter.getRoute(" View3")。attachMatched(this._onRouteFound,this);
 oNavigation = sap.ui.core.UIComponent.getRouterFor(this);
 }
 },
 _onRouteFound:函数(oEvent){
 var oArgument = oEvent.getParameter(" arguments");
 var sCC = oArgument.G_CC;
 this.byId(" LienCC")。setText(sCC);
 var sSA = oArgument.G_SA;
 this.byId(" SecteurActivite")。setText(sSA);
 var sExtui = oArgument.G_Extui;
 this.byId(" PDL")。setText(sExtui);
//饮食不全球化
 oPDL = sExtui;
 oSA = sSA;
 oInstallation = oArgument.G_Anlage;
 },
 

它适用于那些项目,但不适用于表格。 当然,这是因为我的表位于view2的子部分中:

 
 
 
 
 
 
 
 <部分>
 
 
 
 <方块>
 
 
 
 
 
 

相应的子节il像这样

 <表noDataText ="添加子视图" id =" table1" items =" {DonneesPdlSet>/d/results}">
 
 <工具栏>
 <标题文本=" Infos PDL"级别=" H1"/>
 
 

如何使用选定的Extui数据将数据动态绑定到子节?

我在afterRendering事件中尝试过:

 var oTable = this.byId(" table1");
 如果(oTable){
 var oFilter1 = new sap.ui.model.Filter(" Extui",FilterOperator.EQ,oPDL);
 var oFilter2 = new sap.ui.model.Filter(" Sparte",FilterOperator.EQ,oSA);
 var filter = new sap.ui.model.Filter({
 和:是的,
 过滤器:[
 oFilter1,
 oFilter2
 ]
 });
 var binding = oTable.getBinding(" items");
 binding.filter(filters);
 } 

没有问题出现,但是没有用。 输出表为空。

也许使用索引而不是过滤器? Json数据如下:

 {
 " d":{
 "结果":[{
 " ExtUi":" 15478954685471",
 " Haus":" 6000000007",
 " Vstelle":" 5000000032",
 " Sparte":" Gaz",
 " Vertrag":" 300000069",
 " Anlage":" 4000000063",
 " HouseNum1":" 13",
 " Street":" rue des Rosiers",
 " PostCode1":" 27520",
 " City1":"大BOURGTHEROULDE"
 },{
 " ExtUi":" 15478954685471",
 " Haus":" 6000000007",
 " Vstelle":" 5000000032",
 " Sparte":"Electricité",
 " Vertrag":" 300000064",
 " Anlage":" 4000000058",
 " HouseNum1":" 13",
 " Street":" rue des Rosiers",
 " PostCode1":" 27520",
 " City1":"大BOURGTHEROULDE"
 }]
 }
 }
 提前致谢。  

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我正在尝试以下方法:

在我的View上,我选择一个Extui ID,我希望在打开下一个View绑定时存在与所选安装相对应的绑定。

通常,当我需要这样做时,我使用诸如:

之类的路由
"名称":" View3",
 "模式":"/img/DonneesRelevesSet/View3/{G_CC},{G_SA},{G_Extui},{G_Anlage}",
 " titleTarget":"",
 " greedy":错误,
 " target":[" View3"]
 

下一步是在调用route时填充参数:

 onPressModif:函数(oEvent){
 var oCC = oEvent.getSource()。getCells()[0] .getText();
 var oSA = oEvent.getSource()。getCells()[8] .getText();
 var oExtui = oEvent.getSource()。getCells()[1] .getText();
 var oAnlage = oEvent.getSource()。getCells()[12] .getText();
 oNavigation.navTo(" View3",{
 G_CC:oCC,
 G_SA:oSA,
 G_Extui:oExtui,
 G_Anlage:oAnlage
 });
 },
 

没什么奢侈的。

使用包含表格表格的通常视图,很容易在onInit方法中绑定实体,但是在我的情况下,控制器中无法识别表格:

 onInit:函数(){
//在此示例中保留对任何已创建的sap.m.ViewSettingsDialog-s的引用
 this._mViewSettingsDialogs = {};
 var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
 如果(oRouter){
 oRouter.getRoute(" View3")。attachMatched(this._onRouteFound,this);
 oNavigation = sap.ui.core.UIComponent.getRouterFor(this);
 }
 },
 _onRouteFound:函数(oEvent){
 var oArgument = oEvent.getParameter(" arguments");
 var sCC = oArgument.G_CC;
 this.byId(" LienCC")。setText(sCC);
 var sSA = oArgument.G_SA;
 this.byId(" SecteurActivite")。setText(sSA);
 var sExtui = oArgument.G_Extui;
 this.byId(" PDL")。setText(sExtui);
//饮食不全球化
 oPDL = sExtui;
 oSA = sSA;
 oInstallation = oArgument.G_Anlage;
 },
 

它适用于那些项目,但不适用于表格。 当然,这是因为我的表位于view2的子部分中:

 
 
 
 
 
 
 
 <部分>
 
 
 
 <方块>
 
 
 
 
 
 

相应的子节il像这样

 <表noDataText ="添加子视图" id =" table1" items =" {DonneesPdlSet>/d/results}">
 
 <工具栏>
 <标题文本=" Infos PDL"级别=" H1"/>
 
 

如何使用选定的Extui数据将数据动态绑定到子节?

我在afterRendering事件中尝试过:

 var oTable = this.byId(" table1");
 如果(oTable){
 var oFilter1 = new sap.ui.model.Filter(" Extui",FilterOperator.EQ,oPDL);
 var oFilter2 = new sap.ui.model.Filter(" Sparte",FilterOperator.EQ,oSA);
 var filter = new sap.ui.model.Filter({
 和:是的,
 过滤器:[
 oFilter1,
 oFilter2
 ]
 });
 var binding = oTable.getBinding(" items");
 binding.filter(filters);
 } 

没有问题出现,但是没有用。 输出表为空。

也许使用索引而不是过滤器? Json数据如下:

 {
 " d":{
 "结果":[{
 " ExtUi":" 15478954685471",
 " Haus":" 6000000007",
 " Vstelle":" 5000000032",
 " Sparte":" Gaz",
 " Vertrag":" 300000069",
 " Anlage":" 4000000063",
 " HouseNum1":" 13",
 " Street":" rue des Rosiers",
 " PostCode1":" 27520",
 " City1":"大BOURGTHEROULDE"
 },{
 " ExtUi":" 15478954685471",
 " Haus":" 6000000007",
 " Vstelle":" 5000000032",
 " Sparte":"Electricité",
 " Vertrag":" 300000064",
 " Anlage":" 4000000058",
 " HouseNum1":" 13",
 " Street":" rue des Rosiers",
 " PostCode1":" 27520",
 " City1":"大BOURGTHEROULDE"
 }]
 }
 }
 提前致谢。  
付费偷看设置
发送
4条回答
一只江湖小虾
1楼 · 2020-08-31 00:53.采纳回答

我成功解决了这个问题。

问题是绑定subSections =" {DonneesPdlSet>/}">

具有该规范的数据不会显示。

我更改了以下内容:

 
 
 
 
 <方块>
 
 
 
 
 
  

绑定直接在View部分:

 <表noDataText ="添加子页面" id =" table1" items =" {路径:'DonneesPdlSet>/d/results',排序器:[{路径:'ExtUi',降序:false}]}  ">
 
 <工具栏>
 <标题文本=" Infos PDL/PCE"级别=" H1"/>
 <!-
 

最后DonneesPdlSet直接在清单中声明,并作为文件添加到存储库中:

" DonneesPdlSet":{
 " type":" sap.ui.model.json.JSONModel",
 "设置":{},
 " uri":"模型/数据/DonneesPdlSet.json",
 " preload":是
 },
 

该文件位于存储库model.data中。

wang628962
2楼-- · 2020-08-31 00:51

您找到这个问题的答案了吗? 我需要做一些非常相似的事情,我试图用XML视图和过滤器绑定到ObjectPageSection,但无济于事。 不,错误,它根本不起作用1.52.11

梦想连接
3楼-- · 2020-08-31 00:47

你好,

您是否尝试过使用它:

 sap.ui.getCore  ().byID(" table1"); 

问候,

约瑟夫

吹牛啤
4楼-- · 2020-08-31 00:54

嗨约瑟夫,

不幸的是,这是行不通的,因为在onInit方法中无法识别出objectpagelayout table1。

一周热门 更多>