2015-08-25 32 views
0

如果我從數據源獲取NotesDocument對象,請更改一些字段並保存數據源,而不直接保存NotesDocument,則不會保存更改。當您更改背景文檔時如何刷新XPages中的數據源?

例如:

var doc:NotesDocument = document1.getDocument(true); 
doc.replaceItemValue("TestField", "Test"); 

我省與簡單的動作,並在文檔中的域「TestField」數據源是空的。

如何使用背景文檔中的更改更新數據源?

回答

5

Steve的說法正確,如果您想更新後端文檔並在DominoDocument包裝數據源中反映出來,則需要保存。

但是根據你的回答,你爲什麼試圖更新後端文檔?使用document1.replaceItemValue("TestField", "test")更新DominoDocument似乎更有意義。

在queryNewDocument中不存在後端文檔。在document1.save()期間,代碼將有效地調用database.createDocument(),然後將所有字段從document1寫入該新創建的Document對象。如果一個Document對象是早先創建的,那麼你會在你對Steve的回答發表評論時遇到問題 - 如果保存被取消,需要刪除Document對象。

2

在SSJS中,您必須明確地保存您的後端文檔。爲此,只需添加一行以保存文檔更改。我不確定爲什麼簡單的操作不適合你,但添加這一行,你的「測試場」將被更新。

doc.save(); 
+0

但我不想保存文件在這個時候。我在queryNewDocument事件中有這個代碼。這可能會導致文檔被取消。 – Tolbxela

+1

猜猜我不理解......你是否說你想讓前端用戶界面根據對支持文檔所做的更改而改變?你的話似乎是這樣說的,但你的代碼說了別的。如果出現這種情況,請嘗試使用XPage的全面更新進行演示和活動。這應該重新加載數據,包括對後端文檔所做的任何更改。 –

0

我想將作者字段添加到文檔中,並在queryNewDocument事件中執行此操作。

document1.replaceItemValue("Authors", authors); 
var doc:NotesDocument = document1.getDocument(true); 
    if (doc != null) { 
     var Authors:NotesItem = doc.getFirstItem("Authors"); 
     Authors.setAuthors(true); 
    } 

但是如果我不保存與doc.save()和只能做document1.save()結尾,則字段「作者的住宿通常的文本字段。 我不想在用戶點擊保存按鈕之前保存文檔。

有沒有更好的方法可以將Authors字段添加到新文檔中?

+0

我會考慮:1)當用戶保存按鈕時添加作者字段或2)如果這是不可行的,那麼在保存按鈕中,您可以創建一個新的作者字段,分配您先前設置的值,然後setAuthors(真),看看作者領域是否堅持。 –

+0

我有奇怪的效果,當文檔中沒有作者字段並且當前用戶具有作者級別時,他無法進入編輯模式。 無論如何,我已經通過在保存文檔之前添加'Authors.setAuthors(true);'來解決它。 – Tolbxela

相關問題