我有一个笔记数据库,可以将审计信息保存在每个文档的列表中。每当我们要跟踪的内容发生变化时,我们都会更新列表字段;什么时候,谁,什么和价值。我有一个漂亮的按钮,将我从我的表格发送到审计表格。它只是将审计字段复制到显示结果的审计表单。
Sub Click(Source As Button)
Dim wk As New NotesUIWorkspace
Dim s As New NotesSession
Dim db As NotesDatabase
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim item As NotesItem
Dim newDoc As NotesDocument
Set db = s.CurrentDatabase
Set uidoc = wk.currentdocument
Set doc = uidoc.Document
Set newdoc = db.CreateDocument
newdoc.form = "InvoiceAudit"
Set item = doc.GetFirstItem("AuditWhen")
Call Newdoc.CopyItem(item,"AuditWhen")
Set item = doc.GetFirstItem("AuditWhat")
Call Newdoc.CopyItem(item,"AuditWhat")
Set item = doc.GetFirstItem("AuditWho")
Call Newdoc.CopyItem(item,"AuditWho")
Set item = doc.GetFirstItem("AuditValue")
Call Newdoc.CopyItem(item,"AuditValue")
NewDoc.DocID = doc.UniversalID
Call wk.EditDocument(True,NewDoc)
End Sub
我们不想保存此表单。它的唯一目的是显示每个字段中保存的审核信息。我有以下服务器端代码在xPages中模拟它....
var db:NotesDatabase = session.getCurrentDatabase();
var newDoc:NotesDocument = db.createDocument();
var doc:NotesDocument = currentDocument.getDocument(true);
var item:NotesItem;
doc.replaceitemvalue("Form","InvoiceAudit");
item = doc.getFirstItem("AuditWhen");
newDoc.CopyItem(item);
item = doc.getFirstItem("AuditWho");
newDoc.CopyItem(item);
item = doc.getFirstItem("AuditWhat");
newDoc.CopyItem(item);
item = doc.getFirstItem("AuditValue");
newDoc.CopyItem(item);
但是对于我的生活,我找不到模仿wk.editdocument函数的东西....
答案 0 :(得分:3)
您无需从LotusScript复制设计模式。在您的情况下,您需要以不同的形式打开相同的文档。
所以最简单的方法是创建热点,在另一个XPage中打开当前文档(用于审计表单)。
要在其他窗口/标签中打开它,请将target
属性设置为_blank
答案 1 :(得分:1)
这里的问题是您首先要保存文档(在SSJS代码的末尾)。然后,您就可以计算必须打开的URL,例如
context.redirectToPage("doc.xsp?action=editDocument&documentId=" + newDoc.getUniversalID()
另一种方法可能是:将临时值存储在范围变量中,打开空白文档xpage并使用范围变量中的值预填充字段。这种方式很优雅,因为您不必删除在您要关闭它的情况下使用第一种方法创建的临时文档。请记住:请不要将Notes对象(例如newDoc对象)存储在作用域变量中,因为在加载另一个页面后无法确保它存在...
答案 2 :(得分:1)
您可以在对话框中显示审核信息,通过准备包含这些信息的隐藏面板,以及在对话框中显示此面板的按钮