我正在使用“编辑框”控件来显示日期字段。保存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中,字段类型现在是文本而不是日期/时间,这是我希望的。
答案 0 :(得分:2)
此代码对我有用:
<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
性能不佳并且有时会对字段值产生副作用,但可能是一个很好的解决方案,尤其是如果你有很多这样的仅限日期的字段。
答案 1 :(得分:1)
getDateOnly()
返回一个字符串。试试这个:
dt.setAnyTime();
currentDocument.replaceItemValue("dateReparatur", dt);
或者您可能必须获得Document
:
currentDocument.getDocument(true).replaceItemValue("dateReparatur", dt);