3

I'm using an Edit Box control to display a date field. When the XPage is saved, I would like to save the date only (now both date and time are being saved). Is there any way of doing this?

Here is my code:

<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>

UPDATE: I have now implemented the following code:

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

This gives me the date only, however in Notes the field type is now text rather than Date/Time, which is what I was hoping for.

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() 行なしで)、日付フィールドは、保存中にイベントの後に時間とともに汚染されます。

の方法はcomputeWithFormquerySaveDocumentイベントで実行することです。

<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 に答える