0

好的,我有一个包含多个 RichTextField 的表单。在窗体的 PostOpen 事件中,我正在重建几个 RichTextTable。另外,我在这个表单上有一个按钮来更改这些 RichTextTables 中包含的一些信息。

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

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

有人有什么建议吗?

乔丹

4

3 回答 3

0

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

尽管如此,我还是尝试了:NotesRichtextitems 需要先保存,然后才能显示在前端。所以你需要有一个“CloseAndReopen” - 函数,它会进行更新,保存后端文档,然后重新打开文档。像这样的东西:

'Declare variables
Dim ses As New NotesSession
Dim db As NotesDatabase

Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim body As NotesRichtextitem
Dim strUnid As String

'- Set database to get the document
Set db = ses.CurrentDatabase

'- get the current uidoc
Set uidoc = ws.CurrentDocument

'-save it, otherwise you will not be able to access the richtextitem
If uidoc.IsNewDoc Then Call uidoc.Save()

'- Get The backend document
Set doc = uidoc.Document

'- Get the richtextitem
Set body = doc.GetFirstItem( "Body" )

'- and do something with it
Call body.AppendText( "some very interesting text" )
Call body.AddNewline( 2 )

'- found this useful to make the Richtextitem have the changes directly
Call body.Compact()

'- Save it
Call doc.Save( True, True, True )

'- get the unid to be able to reopen
strUnid = doc.UniversalID

'- Make the "do you want to save" disappear
Call uidoc.Document.ReplaceItemValue( "SaveOptions" , "0" )

'- close it
Call uidoc.Close

'- Destroy the object for the doc (otherwise it might NOT really close)
Delete Doc

'- get it back
Set doc = db.GetDocumentByUNID( strUnid )

'- and reopen
Call ws.EditDocument( False , doc )

对于您的视图问题:NotesView.Refresh 不会重建视图的索引。它只是用你初始化对象后发生的一切刷新你的内存表示。但可能“NotesView.AutoUpdate=True”可能会有所帮助。但可能您的服务器只是忙于使视图索引保持最新,或者视图未配置为自动更新(检查视图属性)......

再说一遍:没有代码,这只是盲目猜测......

于 2013-06-27T14:29:59.357 回答
0

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

  • 将 SaveOptions 字段设置为 0。保存文档。
  • 更新 RichText 字段。
于 2013-07-01T03:42:26.483 回答
0

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

简单的解决方案是使用:

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

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

于 2013-06-28T08:33:51.840 回答