Заполните список выбора, используя Lotusscript - PullRequest
1 голос
/ 30 апреля 2020

Я пытаюсь заполнить варианты выбора в форме списка заметок, используя Lotusscript. Моя теория существа. В событии do c Onload я получаю свои данные из представления, добавляя их в скрытое поле. Затем я использую это поле в качестве формулы выбора для списка.

Мне кажется правильным, как будто я использую @FontList в скрытом поле, тогда все шрифты доступны в списке, но с использованием сценария ниже Параметры списка не заполнены, несмотря на то, что оба метода создают поле с типом данных: Текстовый список

Возможно, я не могу заполнить варианты выбора с помощью Onload таким образом, поэтому любые предложения о том, как динамически заполнить варианты списка, используя Лотусскрипт был бы признателен.

Большое спасибо

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

1 Ответ

1 голос
/ 01 мая 2020

В вашем коде есть одна (небольшая) ошибка, но это приведет только к немного неправильным значениям до первой ссылки Refre sh и не является причиной того, что ваш подход не работает:

AppendToTextList уже создает многозначный элемент. Добавлять точку с запятой в этой строке не обязательно:

Call item.AppendToTextList( coName & ";")

Этого достаточно:

Call item.AppendToTextList( coName )

Проблема заключается в следующем: по умолчанию список «вычисляет» свой выбор при открытии и НЕ выполняет измените после этого.

Вам необходимо установить опцию «Refre sh Выбор при обновлении документа» на той же вкладке, где вы вводите имя поля для вариантов.

И тогда вы можете иметь добавить

Call Source.Refresh

после того, как ваш код сделает изменения видимыми.

Еще один комментарий к ответу Дастона: в версии 6 IBM попыталась «объединить» события между Web и Notes Client и сделал возможным добавление LotusScript к ранее «только веб-» событиям «OnLoad», «OnChange», «OnBlur» и т. д. c. через выпадающий список.

Подробнее об этом можно прочитать здесь :

onLoad

Примечание : новое для формул и LotusScript с Выпуск 6

Так что с вашим местом все в порядке, хотя «классический» разработчик Notes действительно выберет «PostOpen вместо OnLoad (или QueryOpen в некоторых случаях) ...

»
...