是否可以确定视图列是否包含常量或仅UI数据?

时间:2012-06-12 14:13:09

标签: java lotus-notes lotus-domino

根据Lotus Notes的documentation,包含具有常量值或UI的列的视图仅作为其数据,该列不会通过getColumnValues方法包含在列值的向量中视图条目。因此,如果在视图中定义了5列,并且一列是常量值,则视图条目仅返回4列值的向量。

尽管从视图索引效率POV可以理解这一点,但遗憾的是,在分析视图及其数据的元结构时,开发人员面临着严重的两难困境。

IBM未能(多年来?)提供一种方法,允许开发人员查询viewColumns结构,以确定列值向量中缺少哪一列。是否有任何编程方法可以确定从viewentry对象的getColumnValues方法中省略哪一列?

2 个答案:

答案 0 :(得分:1)

您可以欺骗视图,将列中的常量值视为公式。我相信它只是附加一个空字符串或将其包装在@Text公式中。例如:

"Constant Value"  // won't be returned by NotesViewEntry's getColumnValues() method

@Text("Constant Value")  // should be returned

"Constant Value" + ""  // should also be returned

如果这不是一个选项,您可以通过NotesView类访问列本身。您应该能够将列值的内容与实际列的比较进行比较。这应该通过比较哪些列没有值到视图中存在的列列表来告诉您哪些被省略。

或者,您可以检查列本身以查看哪些具有常量公式,或者是“ui-only”类型。不幸的是,我相信没有比这更好的方法了。

答案 1 :(得分:1)

使用NotesView.getColumns,然后使用NotesViewColumn.isFormula(),isHidden()和isField()来确定显示哪些列以及它们的值是什么。当您尝试确定列具有固定值时要非常小心......