2016-08-12 7 views
1

上にあるものに私はそれに接続されているドミノ文書のデータソースとリピートコントロール内のパネルを持っている:リセットフィールド値バック保存されたドキュメント

<xp:panel id="RepeatPanel"> 
    <xp:this.data> 
     <xp:dominoDocument 
      var="doc" 
      formName="TestForm" 
      action="editDocument" 
      documentId="#{javascript:viewScope.docId}" 
      concurrencyMode="force"> 
     </xp:dominoDocument> 
    </xp:this.data> 

ユーザーがフィールドの変更を行った場合、私が持っていると思いますキャンセルボタンをクリックすると、部分的な更新が行われ、すべてのフィールドが既存のNotes文書に保存されている内容に戻されます。私がこれを達成する方法はありますか?

答えて

1

使用オプションexecMode="partial" "部分実行モードを設定する":

<xp:button 
    value="Cancel" 
    id="button2"> 
    <xp:eventHandler 
     event="onclick" 
     submit="true" 
     refreshMode="partial" 
     refreshId="inputText1" 
     execMode="partial"> 
    </xp:eventHandler> 
</xp:button> 

のみボタン(ボタン2)は、部分的にサーバに更新=実行されます。部分的にリフレッシュされる部分ではありません(例ではinputText1)。この方法では、inputText1の値はサーバに送られず、サーバは元のデータでこの部分をレンダリングします。

このオプションの詳細については、「XPagesのマスター:XPagesアプリケーション開発のステップガイド」および920ページ以降の「第2版」のマニュアルを参照してください。

代替として、バックエンド文書から の値でリフレッシュ領域内のフィールドをリセットすることができます。 「古い」値とバックエンド文書を取得し、
document1.setValue("A", docOld.getItemValueString("A"))と、現在のデータソースのフィールドに古い値を割り当てるためにvar docOld = document1.getDocument() を使用します。

<xp:button 
     id="buttonCancelRestore" 
     value="Cancel Restore Values"> 
     <xp:eventHandler 
      event="onclick" 
      submit="true" 
      refreshMode="partial" 
      refreshId="panelRefresh" 
      execMode="partial" 
      execId="buttonCancelRestore"> 
      <xp:this.action><![CDATA[#{javascript: 
       var docOld = document1.getDocument(); 
       document1.setValue("A", docOld.getItemValueString("A")); 
       document1.setValue("B", docOld.getItemValueString("B")); 
     }]]></xp:this.action> 
     </xp:eventHandler> 
    </xp:button> 
+0

は完全に働きました。ありがとう! –

+0

私のパネル内のフィールドが部分的にリフレッシュする(私はフィールドを表示/非表示にしている)場合、これは機能しません。部分リフレッシュが発生し、execMode = "partial"でキャンセルボタンをクリックすると、フィールド値はドキュメントの値に戻りません。あなたはこれを回避する方法を知っていますか? –

+1

クライアント側のフィールドを非表示にする/表示することはできますか? –

関連する問題