0

我有一个用 3 个组合框和 1 个视图控件构建的 xPage。我想使用视图控件中的“按列值过滤”选项来提供过滤值的选项,从而允许用户显示组合框的任意组合。例如,仅comboBox1,或comboBox1 和comboBox2,或仅comboBox3,或comboBox1 和comboBox2 和comboBox3。

我使用了“xPages 演示应用程序”中的示例(http://www-10.lotus.com/ldd/ddwiki.nsf/dx/xpagesdemoapp.htmhttp://xpagesblog.com/XPagesHome.nsf/Entry。 xsp?documentId=AAC8E26599256FDC852578CB0066CC13)使用未分类列的向量进行多列过滤。

因此,我遇到了一个似乎相当重要的问题,即数据需要按日期排序。日期不是过滤器之一,但它必须是第一列才能正确排序数据。所以我的第一列是一个字符串,YYYYMMDD,以确保数据正确排序。我尝试在视图控件中使用排序选项,但这似乎不适用于以这种方式实现的列过滤。

因此,作为我过滤的条件之一,我已将其作为空字符串传递 - 使用空字符串将选择所有的思考过程(如上面的 url 示例中所示)。

我用来进行过滤的代码是:

var vtr:java.util.Vector = new java.util.Vector();
var t1 = sessionScope.Email;
var t2 = sessionScope.Own;
var t3 = sessionScope.Module;

vtr.addElement("");
@If(sessionScope.Own=="My calls",vtr.addElement(t1),vtr.addElement(""));
@If(sessionScope.Own=="My calls",vtr.addElement(""),vtr.addElement(t2));
@If(sessionScope.Status=="Open",vtr.addElement("Open"),vtr.addElement(""));
@If(sessionScope.Module=="All",vtr.addElement(""),vtr.addElement(t3));

return vtr;

我发现并非所有数据都被返回。我认为这可能是由于日期字段。所以我删除了它(更改视图并删除了第一个添加元素),但我仍然发现并非所有数据都被返回。我怀疑这可能是由于传递了空字符串,或者这实际上并没有按我希望的方式工作。

有谁知道我是否可以按照我想要的方式进行这项工作,如果没有,您对我该如何解决这个问题有什么建议吗?

4

1 回答 1

1
  1. 不需要日期作为视图中的第一个可排序列。第一列确实需要排序才能使查找工作,就像 Notes 视图需要排序才能使 @DbColumn 和 @DbLookup 工作一样。XPages 使用相同的下划线架构。此示例 - http://dev.openntf.org/demos/demoapp.nsf/viewFilteringVector.xsp - 无需按日期对数据进行排序即可工作。
  2. 我对您的示例为什么不起作用的猜测取决于您的 Notes 视图的排序方式。尝试使用第 1 列(电子邮件)升序排序、第 2 列(自己的)升序排序和第 3 列(模块)再次升序排序来创建一个新视图。在这种情况下,您应该能够使矢量过滤正常工作。
  3. 如果所有这些都不适合您,您可以考虑多层类别过滤(853 的新功能)。XPages 中的这种过滤类型与 categoryFilter 的工作方式有关,但也允许您按子类别(或子类别)过滤视图。这种技术可能更适合您的场景。

    希望这可以帮助。
于 2012-07-16T15:21:33.397 回答