2016-08-12 47 views
1

我有附加一個Domino文檔數據源的重複控制內部面板:重置字段值回什麼是對保存的文檔

<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值不會被髮送到服務器,服務器使用前面的數據呈現該部分。

有關此選項的更多信息,請參閱「Mastering XPages:XPages應用程序開發循序漸進指南和第二版」第920頁和後續內容。

作爲替代,您可以使用後端文檔中的值 重置刷新區域中的字段。使用var docOld = document1.getDocument() 獲得與「老」的價值觀後端文件,並與
document1.setValue("A", docOld.getItemValueString("A"))分配舊值當前的數據源字段:

<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

你可以只在客戶端執行隱藏/顯示字段嗎? –

相關問題