使用Lotusscript填充列表框选项

问题描述 投票:0回答:2

我正在尝试使用Lotusscript在Notes Form Listbox上填充选择。我的理论是。在doc Onload事件中,我从View中检索数据并将其添加到隐藏字段中。然后,我将该字段用作列表框的选择选择公式。

我的想法似乎是正确的,好像我在隐藏字段中使用@FontList一样,所有字体在Listbox中都可用,但是使用Listbox选项下面的脚本是空白的,尽管这两种方法都会产生具有数据类型:文本列表的字段

也许我不能以这种方式使用Onload来填充选择,所以,关于如何使用Lotusscript动态填充列表框的选择的任何建议将不胜感激。

非常感谢

Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim col As NotesViewEntryCollection
Dim entry As NotesViewEntry
Dim item As NotesItem
Dim doc As NotesDocument
Dim coName As String

Set db = session.CurrentDatabase
Set view = db.GetView("All Customers")
Set col = view.AllEntries 'This will be subset if I can get it working 
Set entry = col.GetFirstEntry

Set doc = Source.Document
Set item = doc.GetFirstitem( "FieldToStoreChoices" )


While Not (entry Is Nothing)
    coName = entry.ColumnValues(0)
    Call item.AppendToTextList( coName & ";")
    Set entry = col.GetNextEntry(entry)
Wend
lotus-notes lotus-domino lotusscript
2个回答
1
投票

OnLoad是一个JavaScript事件,因此,除非这是一个Web表单,否则我认为这不是您要追求的。 PostOpen是我放置此类代码的客户端代码的地方。但是您通常有一个正确的想法,为值提供一个隐藏的多值字段,然后将列表框配置为“使用公式进行选择”,该公式就是包含多值的字段,在您的情况下为FieldToStoreChoices。


0
投票

您的代码中有一个(小)错误,但是只会在第一次刷新Form之前导致稍微错误的值,并且不会导致您的方法不起作用:

AppendToTextList已经创建了一个多值项目。在此行中不需要添加分号:

Call item.AppendToTextList( coName & ";")

这足够:

Call item.AppendToTextList( coName )

问题是:默认情况下,列表框在打开时会“计算”其选择,并且此后不会更改。

您需要在输入选项的字段名称的同一选项卡上设置选项“刷新文档时刷新选项”。>

然后您可能必须添加一个

Call Source.Refresh

在您的代码之后,使更改可见。

对Duston的回答的另一条评论:在版本6中,IBM试图“统一” Web和Notes Client之间的事件,并有可能将LotusScript添加到以前的“仅Web”事件“ OnLoad”,“ OnChange”,“通过下拉菜单选择“ OnBlur”等。

您可以阅读有关此here的更多信息:

onLoad

Note

:公式和LotusScript 6版的新增功能

因此,尽管“经典” Notes开发人员会真正选择“ PostOpen over OnLoad(或在某些情况下为QueryOpen),您的位置完全没问题...

© www.soinside.com 2019 - 2024. All rights reserved.