首页 文章

使用'Filter by Column Value'和使用java矢量的多列过滤 - xPages

提问于
浏览
0

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

我使用'xPages Demonstration Application'(http://www-10.lotus.com/ldd/ddwiki.nsf/dx/xpagesdemoapp.htmhttp://xpagesblog.com/XPagesHome.nsf/Entry.xsp?documentId=AAC8E26599256FDC852578CB0066CC13)中的示例使用非分类列的向量进行多列过滤 .

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

因此,作为我过滤的标准的日期之一,我将其作为空字符串传递 - 使用思考过程,空字符串将全部选择(如上面的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;

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

有谁知道我是否可以按照我想要的方式工作,如果没有,你对我怎么做这个有什么建议吗?

1 回答

  • 1
    • 不需要日期作为视图中的第一个可排序列 . 第一列确实需要进行排序才能使查找工作,就像Notes视图需要为@DbColumn和@DbLookup进行排序一样 . XPages使用相同的下划线架构 . 此示例 - http://dev.openntf.org/demos/demoapp.nsf/viewFilteringVector.xsp - 在没有按日期排序的数据的情况下工作 .

    • 我猜你的示例为什么不起作用取决于你的Notes视图如何排序 . 尝试使用第1列(电子邮件)升序排序,第2列(自己)升序排序和第3列(模块)再次升序排序创建新视图 . 您应该能够在这种情况下进行矢量过滤 .

    • 如果所有这些对您不起作用,您可以考虑进行多层类别过滤(853新增) . XPages中的此过滤类型与categoryFilter的工作方式有关,但也允许您按子类别(或子类别)过滤视图 . 这种技术可能更适合您的场景 .

    希望这可以帮助 .

相关问题