Lotus notes 在执行使用这些视图的例程期间,如何刷新不在UI中的视图?

Lotus notes 在执行使用这些视图的例程期间,如何刷新不在UI中的视图?,lotus-notes,lotus,lotusscript,Lotus Notes,Lotus,Lotusscript,好的,我有一个包含几个RichTextFields的表单。在表单的PostOpen事件中,我正在重建几个RichTextTables。此外,我在表单上有一个按钮,可以更改这些RichTextTables中包含的一些信息 第一种情况:第一次打开文档时,不会显示RichTextTables。此后每次打开文档时,它都显示得很好。我怀疑需要打开、关闭和另一个打开才能正确显示RichTextTables。我需要一些帮助让他们第一次展示 第二种情况:在PostOpen中调用以执行此重建的例程也从窗体上的按钮

好的,我有一个包含几个RichTextFields的表单。在表单的PostOpen事件中,我正在重建几个RichTextTables。此外,我在表单上有一个按钮,可以更改这些RichTextTables中包含的一些信息

第一种情况:第一次打开文档时,不会显示RichTextTables。此后每次打开文档时,它都显示得很好。我怀疑需要打开、关闭和另一个打开才能正确显示RichTextTables。我需要一些帮助让他们第一次展示

第二种情况:在PostOpen中调用以执行此重建的例程也从窗体上的按钮调用,该按钮允许用户更改RichTextTables中包含的值。该例程基于在“重建”例程中定义的视图中定义的值来构建这些表。使用此按钮并进行更改时,我将使用NotesView.Refresh例程刷新受影响的视图,然后重建表格,关闭UI并重新打开UI以显示表格。嗯,这不起作用,因为更改不会显示。事实上,如果我关闭文档并重新打开它,更改仍然不会显示。如果我转到已更改的视图并在UI中打开它,然后返回打开文档的窗口,它会在我第二次打开它时显示更改。如何在不必在ui中打开视图的情况下使其工作

有人有什么建议吗


MJ

首先:如果没有看到您的代码,几乎不可能提供帮助

尽管如此,我还是尝试了:NotesRichtextitems需要先保存,然后才能在前端显示。因此,您需要有一个“CloseAndReopen”函数,用于更新、保存后端文档,然后重新打开文档。大概是这样的:

“声明变量
将ses设置为新备注SESSION
Dim db As NotesDatabase
将ws设置为新工作区
Dim uidoc作为NotesUIDocument
标注文档作为注释文档
将主体变暗为注释RichTextItem
暗弦
“-设置数据库以获取文档
Set db=ses.CurrentDatabase
“-获取当前uidoc
设置uidoc=ws.CurrentDocument
“-保存它,否则您将无法访问richtextitem
如果uidoc.IsNewDoc,则调用uidoc.Save()
“-获取后端文档
Set doc=uidoc.Document
“-获取richtextitem
Set body=doc.GetFirstItem(“body”)
”“然后用它做点什么
调用body.AppendText(“一些非常有趣的文本”)
调用body.AddNewline(2)
“-发现这有助于使Richtextitem直接进行更改
调用body.Compact()
-省省吧
调用doc.Save(真、真、真)
-让unid可以重新打开
strUnid=doc.UniversalID
“-使“是否要保存”消失
调用uidoc.Document.ReplaceItemValue(“保存选项”,“0”)
-关上它
打电话给uidoc,关闭
'-销毁文档的对象(否则它可能不会真正关闭)
删除单据
-拿回来
Set doc=db.GetDocumentByUNID(strUnid)
-然后重新开放
调用ws.EditDocument(False,doc)
对于您的视图-问题:NotesView.Refresh不会重建视图的索引。它只是用初始化对象后发生的一切刷新内存中的表示。但“NotesView.AutoUpdate=True”可能会有所帮助。但可能您的服务器太忙,无法保持视图索引最新,或者视图未配置为自动更新(请检查视图属性)


再次强调:没有代码,这只是盲目猜测…

这是非常常见的,因为R4(此版本引入了LS):RT更新仅在再次关闭和打开文档后才会反映出来。如果在打开的文档中更改RT,则需要重新打开它

简单的解决方案是使用:

unid = ... ' get UNID of current document
workspace.CurrentDocument.Close
workspace.EditDocument unid, False

这将重新打开文档,您将看到RT的更改。

您的文档应该保存。并且您的RichtextItem应该更新。之后,仅显示RichText项的内容

  • 将SaveOptions字段设置为0。保存文档
  • 更新RichText字段

我同意上述观点。通常,您打算对RichText项执行的操作可能会有所不同:嵌入式视图、多值字段、纯文本字段、HTML等等。你到底想完成什么?