IBM Lotus Notes 如何在 columnvalues 中指示视图列号

IBM Lotus Notes how to indicate the view column number in columnvalues

我现在正在使用 C# 开发 IBM Lotus Notes 插件的项目。

这里的请求是我们想通过视图列的名称从视图中获取数据,例如"Date"。

我发现我可以使用"NotesView" class中的方法"GetColumn"来获取列名信息和其他基本信息,但其中不包含真实数据. 要获取数据,我需要使用 "ViewEntry" class 或 "Document" class.

中的属性 "ColumnValues"

遗憾的是,对于IBM提供的技术文档,有几种情况并不是所有的列值都是return。 https://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.0/com.ibm.designer.domino.main.doc/H_COLUMNVALUES_PROPERTY_JAVA.html

例如GetColumn的结果是16列,第12列的名称是"Date",是datetime类型。但是在 ColumnValues 中,只有 13 列,没有列名,第 8 列类型是 datetime,这似乎是 "Date" 列。

我试图找出哪些列将被省略。 首先,我试图抓住公式中的 "UI-only function",但似乎还不够。其次,我试图抓住 "constant",但不知道如何。最后我发现并不是所有的"constant"公式列都被删除了。我弃了。

有没有人可以帮我在columnvalues中指明视图列号?

@RichardSchwartz 我用C++在笔记中创建了一个菜单项,它会在外面调用真正的笔记应用程序,然后我将它们称为"plugin"。 IBM 将 LotusScript 和 Java 作为非 COM 和 COM(Windows 技术)引入,C# 和 Java 都通过 COM 得到支持,但由于它们提供相同的功能,Java 主要是在IBM上描述,没有C# docs.For C++,它在Notes C++开发工具包中有文档,这是一个nsf。

我想在视图中获取值而不是在 NotesDocument 中查找值的原因有 2 个:

  1. 用户可见性。
    用户在 NotesDocument 中看不到项目名称(如 textbox_1),但他们可以直接在视图上看到列名称,并且此名称可以表示列(但不是列值)。

  2. 普遍性。
    对于不同的DB和相同含义的项目,不仅项目名称不同,而且项目值也会不同。如果您在 NotesDoument 中查找该值,那么您的程序可能只适用于 1 db。 例如,一个数据库的文档中的值 "Approve State" 是 "Checked,Approved",并且在视图中显示相同的词。但是对于另一个DB,一个DB中"Approve State"的值为“1,2,3”,视图列的公式判断值为“1,2,3”,最后显示"Checked,Approved"。

对于您想使用的通用方法(通过 select 标题让用户 select 列),您最好使用列 属性 NotesView object,然后迭代所需文档所在的视图,对于 selected 视图列:

  • 如果 vwcol.IsField 属性 为真,return doc.GetItemValue(vwcol.ItemName)
  • 如果 vwcol.IsField 属性 为假(vwcol.IsFormula = 真),return Evaluate(vwcol.Formula, doc)