xpages将字段值复制到其他数据源的另一个字段

时间:2014-06-18 07:33:23

标签: xpages

我跟着How do you copy a datetime field from the current document to a new document,我尝试这样的事情:

Cdoc.save();
Pdoc.copyItem(Cdoc.getDocument().getFirstItem("mytest1"));
getComponent('exampleDialog').show()

但是我收到了处理错误消息。

谢谢你的时间!

2 个答案:

答案 0 :(得分:1)

假设CdocPdoc被定义为xp:dominoDocument个数据源,那么您必须将代码更改为:

Cdoc.save();
Pdoc.getDocument().copyItem(Cdoc.getDocument().getFirstItem("mytest1"));
getComponent('exampleDialog').show()

因此,您只需要将 .getDocument()添加到Pdoc以获取Notes文档。否则它会失败并且您在“NotesXspDocument”“类型的对象上收到错误”错误调用方法'copyItem(lotus.domino.local.Item)'。

请注意,如果要在exampleDialog中显示复制的项目,则必须在复制项目后保存Pdoc

如果您此时不想保存文档Pdoc,那么您可以使用以下内容复制NotesXspDocument级别的项目:

Pdoc.replaceItemValue("mytest1", Cdoc.getItemValueDateTime("mytest1"));
getComponent('exampleDialog').show()

答案 1 :(得分:0)

我不经常使用" copyItem"。您没有指定是否使用NotesDocuments或NotesXspDocuments,因此我将快速编写两者,因为它们应该以不同的方式处理。

var currentDoc:NotesDocument = ....
var newDoc:NotesDocument= ...

newDoc.replaceItemValue("fldname", currentDoc.getItemValueDateTimeArray("fldname").elementAt(0)) 

如果currentDoc是NotesXspDocument,请使用以下

var currentDoc:NotesXspDocument = ...
var newDoc:NotesDocument=...
newDoc.replaceItemValue("fldname", currentDoc.getItemValueDateTime("fldname"))

否则,您可以继续尝试使用copyItem,我只是缺乏使用它的经验。

修改
只需添加一些内容,请记住调用xspDoc.getDocument(true)会更新后台文档,这可能是必需的。此外,在您发布的那篇文章的评论中,他们提到了将该文档放入另一个变量的可能性。

var docSource:NotesDocument = xspDoc.getDocument(true);
var docNew:NotesDocument = ...
docNew.copyItem(docSource.getItem("blah"); 

还要记住,copyItem是NotesDocument的函数,而不是NotesXspDocument。