2015-08-25 33 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

相关问题