大家好,才是真的好。
要是我没记错的,我们很久没有说到开发的话题了,尤其是关于lotusscript代码功能的问题。
今天我们讲一个非常实用的小功能。即在对话框当中显示一个视图,然后从该视图选择单个或多个文档,并把选中的文档中的某些字段值,返回到当前编辑的文档当中。
说起来很拗口,其实就是一件事情,选择对话框。
以前我们讲过很多对话框,例如内置的、进度条的、自定义外观的,但没有讲到里面的选项是怎么来的,本篇就讲对话框里加载视图,效果差不多是如下图样子:
要实现该功能,你首先建一个表单,例如叫“对话框应用”,只有两个字段类别和项目,然后创建一个按钮,名字叫"选择类别和项目",如下图所示:
接着你可以建一个视图,对应上面这个表单。里面有两个列,分别是类别和项目,效果如下图所示:
做好之后,可以尝试录入几条测试数据。
回到“对话框应用”表单里,点击"选择类别和项目"按钮,将下列代码写到该按钮的Click事件中:
Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim col As NotesDocumentCollection
Dim doc As NotesDocument
Dim agent As NotesAgent
Dim uidoc As NotesUIDocument
Dim maindoc As NotesDocument
Set db = session.CurrentDatabase
Set uidoc = Workspace.CurrentDocument
Set maindoc = uidoc.Document
Set col = workspace.PickListCollection(1, False, db.Server, db.FilePath, "allitems", db.Title & "- 编辑信息", "请从视图中选择一个文档")
If col Is Nothing Then Exit Sub
Set doc = col.GetFirstDocument
If doc Is Nothing Then Exit Sub
Call uidoc.FieldSetText("flditem",doc.item(0))
Call uidoc.FieldSetText("fldtype",doc.type(0))
Call uidoc.refresh(False,True)
效果如下:
其实就是用到了LotusScript的前台类NotesUIWorkspace中的PickListCollection方法,这个方法允许我们将视图加载到对话框中。
于是问题又来了,弹出的视图对话框,能否带有搜索功能?毕竟,一个视图里面的数据可能成百上千。
我的答案是默认没有可搜索的对话框,也不支持通过视图的搜索功能来实现。
但隐藏着一个搜索功能,就是在对话框中直接输入文本文字来进行搜索,如下图所示:
如果这个答案不满意,那么还有一个可行的思路,就是使用文件夹来进行搜索,需要写代码将符合条件的文档移入到文件夹中。
不过,我们建议你还是先等等,毕竟这个问题已经有很多人提出来了,而HCL官方的回复是,已经计划在Notes/Domino产品中实施,如下图所示:
该篇和解答粉丝提问有关,特意写在这里。
今天我们就介绍到这里吧。
最后欢迎搜索公众号“协作者”来关注我。