点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我有一个摘要屏幕,该屏幕必须在选择框中加载帐户,并使用oData填充表单中的所有字段,并将其基于URL中的ID。
但是我需要加载选择框以便获得正确的帐户来加载页面的其余部分,并且一旦页面加载就必须已经填充了第一个帐户(因此,没有人在选择框中进行选择)。 我只能在渲染后加载组合框,而不能在onInit上加载,也无法获取选择框的项目以获取帐号。
如果只有一个帐户,我可以加载整个页面,并且可以在选择框中加载所有帐户号码,但是当加载页面时,它不是基于帐户号码的。
有什么更好的方法来加载选择框并能够获取项目以加载页面的其余部分?
获取oData并将其转换为json onInit会更好吗? 如果是这样,我可以举个例子吗,我已经尝试了一些例子,但没有成功。
onInit:function(){ //获取网址并从中获取ID var url = window.location.href; var id = url.substring(urlString.length-10,urlString.length); $ .sap.urlId = id; //不工作:SAP Odata服务网址 var sServiceUrl ="/img/SummaryScreenSet('" + id +"')"; //创建OData模型 var oModel = new sap.ui.model.odata.v2.ODataModel(sServiceUrl,{ useBatch:true}); var oODataJSONModel = new sap.ui.model.json.JSONModel(); var oData = oModel.read("/img/SummaryScreenSet",{ 方法:" GET", 成功:function(oData2,oResponse){ //创建JSON模型 sap.m.MessageBox.show("成功!"); oODataJSONModel.setData({modelData:oData2.results});}, 错误:function(oError){ sap.m.MessageBox.show(" Error!");}}); }, onAfterRendering:function(){ var id = $ .sap.urlId; var comboB = this.getView()。byId(" accountBox"); comboB.bindAggregation(" items","/img/SummaryScreenSet",新的sap.ui.core.ListItem({text:" {ACCOUNT}"}))); var oFilterDist =新的sap.ui.model.Filter(" PARTNER",sap.ui.model.FilterOperator.EQ,id); comboB.getBinding(" items")。filter(oFilterDist); },
嗨..
需要澄清的事情。
1。 为什么要从URL获取ID。
2。 如果要在渲染时填充组合框,则在填充或绑定组合框之后,再调用其余页面数据..正如你所说的,这取决于组合框数据的值..而不是为什么要在Init上调用服务
谢谢
Viplove
好..
首先..使您的应用依赖于url不好..您需要通过其他方式传递值..如果其路由不是在调用route函数时将其作为路由参数传递。 >
第二次,您传递ID之后,要获得调用ID的函数即可获取其他数据..甚至您还可以将选择框数据服务绑定并绑定,并在发生更改事件时将selectbox的选定键绑定到传递的ID 捆绑。
谢谢
嗨
请使用路径绑定组合框的属性" selectedKey",以查看数组的默认第一个值。 这里以一个示例为例,我使用了Countrycollection数组并绑定了该数组的第一行
<组合框项=" {路径:'/CountriesCollection',排序器:{路径:'文本'}}""
selectedKey =" {/CountriesCollection/0/key}">
一周热门 更多>