OData模型中的空日期在DatePicker中不起作用

马蒂布

在我的流程中,我们有一个截止日期,即日期。但是直到达到特定状态才设置该日期。说我想在设置日期之前显示此日期,但它仍是初始的。

日期以字符串形式返回,因此在我的模型中为00000000。(我知道字符串不是日期,但这是选择的,我必须使用它。)

这是控件:

<DatePicker type="Date" placeholder="{i18n>DateStateUnknown}"
     enabled="{
        parts : [ 
            {path : 'settings>/incidentLock/MayChangeResponsible'},
            {path : 'DeadlineDate'} 
        ], formatter: 'com.company.inc.util.Formatter.mayChangeDeadline' }"
    displayFormat="long"
    value="{path:'DeadlineDate', 
            type: 'sap.ui.model.type.String', 
            constraints: { minLength : 2}, 
            formatter: 'com.company.inc.util.Formatter.setBaseDate'}"
    valueFormat="yyyyMMdd" />

我的格式化程序如下所示:

setBaseDate: function(val){
   try{
    if(val=="00000000"){
                    return "";
                }else{
                    return val;
                }
            }catch(e){
                return "";
            }
        },

diplay符合预期。日期为空时不显示任何内容。唯一的事情是,使用此格式化程序,我失去了与odata模型的连接。这意味着无论何时更改值,它都不会反映在odata模型中,因此无法保存此日期。当我第一次设置一个值,而控件仍然为空时,情况也是如此。

有人知道如何解决此问题吗?我宁愿不要将其他选项视为隐藏字段。

品质

解决您问题的唯一方法是

  1. 摆脱格式化程序,并
  2. 日期为空null或字符串为空,但除"00000000"

原因是,根据API,使用格式化程序会使您的控件变为只读状态

当前,计算出的字段仅在模型到视图之间起作用,并且是只读的,并且可以通过格式化程序功能访问这些值。

此外,日期“ 00000000”的格式yyyyMMdd正确地解析为1969年12月1日,因此,如果要避免这种情况,则日期值应与“ 00000000”不同

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章