2017-08-01 51 views
0

我现在正在使用C#开发IBM lotus notes插件的项目。IBM Lotus Notes如何指定列值中的视图列号

这里的请求,我们希望通过视图列的名称,如“日期”从视图中获取数据。

我发现我可以使用“NotesView”类中的“GetColumn”方法来获取列名和其他基本信息的信息,但实际数据不包含在其中。 要获取数据,我需要使用“ViewEntry”类或“Document”类中的属性“ColumnValues”。

不幸的是,关于IBM提供的技术文档,有几种情况并不是所有的列值都会返回。 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列的名称是“日期”,它是日期时间类型。但在ColumnValues中,只有13列,没有列名,第8列类型是datetime,它似乎是“Date”列。

我试图找出哪些列将被省略。 首先,我试图捕捉公式中的“仅用户界面功能”,但似乎还不够。其次,我试图抓住“不变”,但不是如何。最后我发现并非所有的“常量”公式列都被删除了。我放弃了。

有没有人能帮我指出列值中的视图列号?

+1

最好的做法是有意见进行编程访问来自不同UI访问的视图。程序化访问视图不应包含未包含在列值中的列。那么你的代码将更容易开发。 – Newbs

+0

请解释“插件”的含义。什么类型的插件?它如何以及它在哪里运行?据我所知,在基于eclipse的客户端UI环境中运行的插件是用Java编写的,而不是C#。另外,请解释为什么您认为应该通过视图中的columnValues访问值,而不是通过文档中的NotesItems访问值。 (有时候有很好的理由,但是我经常看到有人试图做到这一点,因为使用NotesDocuments和NotesItems会更简单 –

+0

@Newbs谢谢你的逻辑思想,我的问题真的是你说的:目前我只能找到程序化访问的视图值,但没有编程访问的视图名称,所以我无法完成指示。您知道如何获取Lotus Notes中编程式访问的视图列名称吗? –

回答

0

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

有,为什么我想在视图中的值,而不是查找该NotesDocument的内部值的2个原因:

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

  2. 普遍性。
    对于不同的DB和具有相同含义的项目,不仅项目名称会有所不同,而且项目值也会不同。如果你在NotesDoument中查找值,那么你的程序可能只能工作1分贝。 例如,一个数据库文档中的“批准状态”值是“已检查,已批准”,以及视图中显示的相同单词。但对于另一个DB,一个DB中的“批准状态”的值为“1,2,3”,视图列的公式将判断值“1,2,3”,最后显示“已检查,已批准”。

0

对于要使用(让用户通过选择标题选择列)的通用方法,你会得到更好的使用为NotesView对象的Columns属性,然后遍历在您需要的文档视图服务居住,并为选定的视图列:

  • 如果vwcol。IsField属性为True,返回doc.GetItemValue(vwcol.ItemName)
  • 如果vwcol.IsField属性为False(vwcol.IsFormula = TRUE),返回Evaluate(vwcol.Formula, doc)
相关问题