如何在SAPUI5中使用输入组件处理数字

2020-08-27 18:40发布

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

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


嗨,专家

当我使用Input组件处理数字字段时,这是一个问题。

在我的代码中,第一步是判断字段的类型

常量类型= typeof(值)

然后,不同类型的数据将返回不同的控件(例如,输入,切换)

代码是这样的

 _generateDataControl:函数(键,值,modelName,sPath){
     令t = {}
     开关(typeof(value)){
         案件编号' : {
             t = new Input(key,{
                 宽度:" 150px",
                 值:{
                     type:'sap.ui.model.type.Integer',//无法处理浮点数
                     路径:`$ {modelName}> $ {sPath}/$ {key}`
                 },
             //值:`{$ {modelName}> $ {sPath}/$ {key}}`////结果是一个字符串
                 类型:InputType.Number
             })
             打破
         }
         大小写"字符串":{
             t = new Input(key,{
                 宽度:" 150px",
                 值:`{$ {modelName}> $ {sPath}/$ {key}}`,
                 类型:InputType.Text
             })
             打破
         }
         案例"布尔值":{
             t =新的Switch(key,{
                 状态:`{$ {modelName}> $ {sPath}/$ {key}}`,
                 类型:SwitchType.AcceptReject
             })
             打破
         }
     }
     返回t
 }
 

我标记的行是我的问题。 如果值为数字,则会创建具有数字类型的Input组件。

如果我未设置值的类型,则用户输入后的结果为字符串。 但是,如果将其设置为Integer,则无法处理浮点数。

在JavaScript中,所有数字包括整数,双精度数和浮点数,均属于Number类型。

那么我该如何做这个自动化数据控制生成器。 谢谢!

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

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


嗨,专家

当我使用Input组件处理数字字段时,这是一个问题。

在我的代码中,第一步是判断字段的类型

常量类型= typeof(值)

然后,不同类型的数据将返回不同的控件(例如,输入,切换)

代码是这样的

 _generateDataControl:函数(键,值,modelName,sPath){
     令t = {}
     开关(typeof(value)){
         案件编号' : {
             t = new Input(key,{
                 宽度:" 150px",
                 值:{
                     type:'sap.ui.model.type.Integer',//无法处理浮点数
                     路径:`$ {modelName}> $ {sPath}/$ {key}`
                 },
             //值:`{$ {modelName}> $ {sPath}/$ {key}}`////结果是一个字符串
                 类型:InputType.Number
             })
             打破
         }
         大小写"字符串":{
             t = new Input(key,{
                 宽度:" 150px",
                 值:`{$ {modelName}> $ {sPath}/$ {key}}`,
                 类型:InputType.Text
             })
             打破
         }
         案例"布尔值":{
             t =新的Switch(key,{
                 状态:`{$ {modelName}> $ {sPath}/$ {key}}`,
                 类型:SwitchType.AcceptReject
             })
             打破
         }
     }
     返回t
 }
 

我标记的行是我的问题。 如果值为数字,则会创建具有数字类型的Input组件。

如果我未设置值的类型,则用户输入后的结果为字符串。 但是,如果将其设置为Integer,则无法处理浮点数。

在JavaScript中,所有数字包括整数,双精度数和浮点数,均属于Number类型。

那么我该如何做这个自动化数据控制生成器。 谢谢!

付费偷看设置
发送
3条回答
蓋茨
1楼-- · 2020-08-27 19:02

您好 Yi Zou

输入中的数字类型只能处理类型" 整数"而不是Float。 因此,您只能使用数据类型来处理它们,而只能使用" sap.ui.model.type.Float"

。但是我不认为上面的方法会在输入char或输入字符的情况下抛出错误 这是一个问题,它不能处理所有错误。 我通常使用" sap.ui.model.odata.type.Decimal",它像处理所有错误的超级按钮一样工作。 如果您想限制小数和东西,请尝试传递格式选项。 例如

 value =" {path:'/NetWeight',类型:'sap.ui.model.odata.type.Decimal',formatOptions:{minFractionDigits:3,maxFractionDigits:3},约束:  {precision:13,scale:3}}" 

BTW错误将在您使用邮件管理器时自动处理。

谢谢,
Mahesh

小灯塔
2楼-- · 2020-08-27 19:19

您好邹一

很高兴听到并喜欢看到

此外,我建议您基于odata服务的元数据(如果正在使用)创建控件,因为这将是理想的方法 甚至sap Fiori元素都是基于此的。

谢谢

Mahesh

N-Moskvin
3楼-- · 2020-08-27 19:18

大家好

在我的案例中,我受 Mahesh Kumar Palavalli

就我而言,我必须保留用户在输入组件中进行编辑时永远不会更改的字段类型。 在此基础上,如果它能够同时处理整数和浮点数,那就太好了。

所以我向输入组件更改挂钩添加了一个函数。

//如果模板数据字段为"数字"
 案件编号' : {
     t = new Input(key,{
         宽度:" 150px",
         值:`{$ {modelName}> $ {sPath}/$ {key}}`,
         类型:InputType.Number,
         更改:函数(e){
            //保持此字段的类型仍为数字
             const data = Number(this.getValue())
            //手动将数据设置为模型
             oModel.setProperty(`$ {sPath}/$ {key}`,数据)
         }
     })
     打破
 }
 

在我的代码中,当'change'事件触发时,我从输入组件中获取值。 输入组件返回的数据是字符串。 因此,我将其转换为javascript中的数字,然后将其设置为手动建模。 (我认为这不是一个很好的方法)

因此,"类型:InputType.Number"仅通过RegExp设置验证。 并且当它与模型以双向绑定方式绑定时,它不会将结果格式化为数字。 (尽管ABAP的oData服务可能永远不会关心)。 我认为这可能是错误或需要由openui5社区修复或检查的问题。

一周热门 更多>