3

我正在使用编辑框控件来显示日期字段。保存 XPage 时,我只想保存日期(现在正在保存日期和时间)。有没有办法做到这一点?

这是我的代码:

<xp:inputText id="dateReparatur" value="#{document1.dateReparatur}">
<xp:this.converter>
<xp:convertDateTime type="date" dateStyle="long">
</xp:convertDateTime>
</xp:this.converter>
<xp:dateTimeHelper></xp:dateTimeHelper>
</xp:inputText></xp:td>

更新:我现在已经实现了以下代码:

var dt = currentDocument.getItemValueDateTime("dateReparatur");
var dateonly = dt.getDateOnly();
currentDocument.replaceItemValue("dateReparatur",dateonly);

这只给了我日期,但是在 Notes 中,字段类型现在是文本而不是日期/时间,这是我所希望的。

4

2 回答 2

3

这段代码对我有用:

    <xp:this.postSaveDocument><![CDATA[#{javascript:
        var dt:DateTime = document1.getItemValueDateTime("dateReparatur");
        dt.setAnyTime();
        currentDocument.getDocument(true).replaceItemValue("dateReparatur", dt); 
        currentDocument.getDocument(true).save()
    }]]></xp:this.postSaveDocument>

在此处输入图像描述

它只在postSaveDocument活动中起作用。如果您将相同的代码放入querySaveDocument事件中(当然没有文档 save() 行),则日期字段会在保存过程中随着时间的推移而受到污染。

另一种方法computeWithForm是在querySaveDocument事件中执行:

<xp:this.querySaveDocument><![CDATA[#{javascript:
    document1.getDocument(true).computeWithForm(true, true)
}]]></xp:this.querySaveDocument>

您必须Input Translation在表单中的日期字段中添加一个公式:

@Date(@ThisValue)

computeWithForm虽然性能很差,并且有时会对字段值造成副作用,但可能是一个很好的解决方案,特别是如果您有很多此类仅限日期的字段。

于 2013-10-29T15:18:06.073 回答
1

getDateOnly()返回一个字符串。试试这个:

dt.setAnyTime();
currentDocument.replaceItemValue("dateReparatur", dt);

或者您可能必须获得Document

currentDocument.getDocument(true).replaceItemValue("dateReparatur", dt);
于 2013-10-29T09:02:56.710 回答