提问者:小点点

使用“按列值过滤”和使用java vector - xPages的多列过滤


我用3个组合框和1个视图控件构建了一个xPage。我想在视图控件中使用“按列值筛选”选项来提供筛选值的选项,允许用户显示组合框的任何组合。e、 g.仅组合框1,或组合框1和组合框2,或仅组合框3,或者组合框1、组合框2和组合框3。

我在“xPages演示应用程序”(http://www-10 . lotus . com/ldd/DD wiki . NSF/dx/xpagesdemoapp . htm或http://xpagesblog.com/XPagesHome.nsf/Entry.xsp?)中使用了这个例子documentId = aac8e 26599256 FDC 852578 CB 0066 cc 13)使用未分类列的向量进行多列筛选。

因此,我遇到了一个似乎相当大的问题,即数据需要按日期排序。Date 不是筛选器之一,但它必须是第一列才能正确排序数据。所以我的第一列是一个字符串 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;

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

有没有人知道我是否可以按照我希望的方式工作,如果没有,你对我如何进行这件事有什么建议?


共1个答案

匿名用户

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

    希望这有帮助