如何在XML视图选择中设置默认值

2020-09-22 06:32发布

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

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


大家好,

我有一个带有选择列表的编辑屏幕。 我通过填充命名模型来获得该列表。 我相信这是一个非常标准的方法。 但是,我不知道如何在"选择"上设置默认值。 我已经读过有关如何使用json.view做到这一点的文章,但我正在使用xml视图。

这是component.js声明:

 this.setModel(new sap.ui.model.json.JSONModel()," myStatusModel"); 

这是我的控制器的初始化:

 var oStatusModel = new sap.ui.model.odata.ODataModel("/img/sap/opu/odata/sap/ZCRM_OPPORTUNITY_SRV");
 var that = this;
 oStatusModel.read(" UserStatuses",{
 成功:function(oData){
 var myStatusModel = that.getOwnerComponent()。getModel(" myStatusModel");
 myStatusModel.setData(oData.results);
 },
 错误:function(error){
 MessageToast.show("糟糕!");
 }
 });
 

当然还有我的视图(只是选择部分):

 <选择id =" userStatus"
         items =" {myStatusModel>/}"
         change =" onUserStatusChange">
 
 
 

所选内容默认为列表中的第一项。 我在模型的{UserStatusText}元素中具有默认值,但不知道如何将其设置为默认值。 也许我不应该使用Select?

我已经阅读了有关在后端进行更改的建议,但这并不是我真正的选择。

任何建议都将不胜感激...谢谢!

格雷格

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

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


大家好,

我有一个带有选择列表的编辑屏幕。 我通过填充命名模型来获得该列表。 我相信这是一个非常标准的方法。 但是,我不知道如何在"选择"上设置默认值。 我已经读过有关如何使用json.view做到这一点的文章,但我正在使用xml视图。

这是component.js声明:

 this.setModel(new sap.ui.model.json.JSONModel()," myStatusModel"); 

这是我的控制器的初始化:

 var oStatusModel = new sap.ui.model.odata.ODataModel("/img/sap/opu/odata/sap/ZCRM_OPPORTUNITY_SRV");
 var that = this;
 oStatusModel.read(" UserStatuses",{
 成功:function(oData){
 var myStatusModel = that.getOwnerComponent()。getModel(" myStatusModel");
 myStatusModel.setData(oData.results);
 },
 错误:function(error){
 MessageToast.show("糟糕!");
 }
 });
 

当然还有我的视图(只是选择部分):

 <选择id =" userStatus"
         items =" {myStatusModel>/}"
         change =" onUserStatusChange">
 
 
 

所选内容默认为列表中的第一项。 我在模型的{UserStatusText}元素中具有默认值,但不知道如何将其设置为默认值。 也许我不应该使用Select?

我已经阅读了有关在后端进行更改的建议,但这并不是我真正的选择。

任何建议都将不胜感激...谢谢!

格雷格

付费偷看设置
发送
3条回答
小灯塔
1楼 · 2020-09-22 07:05.采纳回答

嗨,格雷格,

您可以按照SAPUI5 SDK中的示例进行操作。 这是链接。

选择

有一个属性:selectedKey。 您只需将值设置为模型的第一项即可。

此致

Tri

clever101
2楼-- · 2020-09-22 07:14

有时问题仍然存在时,最好继续前进,一天后返回并ba。 您会发现错误,并想知道一开始您是如何错过它的。 Tri和Jamie都在现场。 这是有效的代码,我很笨拙地在selectedKey中设置了我的命名模型。 h 也许有人会从下面我过度设计的过程中受益。

 <选择id =" userStatus"
 selectedKey =" {UserStatusCode}"
 items =" {myStatusModel>/}"
 change =" onUserStatusChange">
 
                                                                     
小c菟菟
3楼-- · 2020-09-22 07:00

这就是我的解决方法。 有点骇客,但确实有效。

当我加载命名模型时,我会浏览odata.results并将所选的模型放在第一位,这将是默认值。 我将按数字说明我所做的事情。

1。 获取获取当前UserStatusCode所需的路径。

2。 获取当前的UserStatusCode。

3。 在oData.results的七个选项列表中,按索引查找哪个是当前选项。

4。 重新排序oData.results,将当前值的索引放在位置0。

我对此并不完全满意,因此我不会在几天内将其发布为答案,以使人们有机会做得更好。 再说一次,只有7行代码。

 var oStatusModel = new sap.ui.model.odata.ODataModel("/img/sap/opu/odata/sap/ZCRM_OPPORTUNITY_SRV");
 var that = this;
 oStatusModel.read(" UserStatuses",{
 成功:function(oData){
 1-> var sPath = that.getView()。getBindingContext()。getPath();
 2-> var sCurrentStatusCode =
                    that.getView()。getBindingContext()。oModel.oData [sPath.substring(1)]。UserStatusCode;
 3-> for(var i = 0; i  oData.results.splice(0,0,oData.results.splice(i,1)[0]);
 }
 }
 var myStatusModel = that.getOwnerComponent()。getModel(" myStatusModel");
 myStatusModel.setData(oData.results);
 },
 错误:function(error){
 MessageToast.show("状态模型拒绝绑定。AwwSnap!");
 }
 });
 

一周热门 更多>