代码之家  ›  专栏  ›  技术社区  ›  Ben Dubuc

在Lotusscript的对话框中模拟表单并更新调用文档

  •  0
  • Ben Dubuc  · 技术社区  · 6 年前

    这是Notes客户端应用程序中的问题,而不是web应用程序中的问题。

    子窗体的经典案例,在对话框中打开,用于输入主窗体上所需的部分数据。问题是,在该子窗体上,有一些链接可以打开视图(是的,它们是必需的),而您似乎无法在对话框中打开视图。

    因此,我将子表单转换为表单,现在我要做的是从uidoc打开该“子表单”,并将“子表单”中的所有值返回到主文档中。

    主文档未保存。如何从“子窗体”获取“打开”文档的句柄,以便传递值?或者其他方式(现场交换,或其他)?欢迎提出意见。。。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Tode    6 年前

    从技术上讲,这很容易

    您可以在表单中定义一个全局变量(最好是在表单全局选项中使用的脚本库)。

    Dim uidocOpener作为NotesUIDocument

    然后在新表单的“初始化”事件中设置:

    Dim ws as New NotesUIWorkspace
    Set uidocOpener = ws.CurrentDocument
    

    在这种情况下,新文档尚未打开,因此CurrentDocument返回“最后一个”打开的文档(即打开者)。

    保存/关闭时,您可以更新“opener”文档中的字段,如下所示

    Call uidocOpener.Document.Replaceitemvalue( "YourItem", Source.Document.Getitemvalue( "YourItem" ) )
    

    但要小心:您需要监视打开器是否仍处于打开状态,并确保用户不会在另一个窗口打开时对其进行编辑,因为它不会像对话框那样阻止gui。

        2
  •  1
  •   Duston    6 年前

    我们做了一件事(不幸的是,我不能为这件事负责,但是……)在“呼叫表单”中

    Sub Click(Source As Button)
        Dim ws As New notesUiWorkspace
        Dim parent As notesUiDocument
        Dim newui As NotesUIDocument
        Set parent = ws.currentDocument
        Set newui=ws.composeDocument("" , "" , "NewLogEntry")
        Call parent.Close(True)
        Call newui.Refresh
    End Sub
    

    这将打开新的“对话框”,并关闭原始表单,以便用户不会感到困惑。

    然后在“对话框”中,有一个名为“WorksheetID”的字段(这是调用表单),其公式为

    temp:=@InheritedDocumentUniqueID;
    @Text(temp)
    

    然后,“关闭”或“处理”或任何按钮都有(a)访问原始文档的方法(使用继承的UNID),以及(b)“对话框”上的所有信息,以便添加到该文档中。