Xpages 如何在数据视图(xe:dataView或xe:dynamicViewPanel)中有条件地选择某些文档(NotesXspViewEntry)

Xpages 如何在数据视图(xe:dataView或xe:dynamicViewPanel)中有条件地选择某些文档(NotesXspViewEntry),xpages,xpages-extlib,Xpages,Xpages Extlib,在一段时间内,我需要这样的东西: SELECT ( resDueDateBegin >= @Today) & (resDueDateEnd <@Adjust(@Today;0;1;0;0;0;0)) SELECT(resDueDateBegin>=@Today)&(resDueDateEnd最好不要在SELECT语句中对视图本身进行日期筛选 相反,您可以使用按键(或一组键)筛选视图的功能。在这种情况下,您可以使用日期范围作为筛选器 首先,确保视图按两个日期字段排序,然后添加

在一段时间内,我需要这样的东西:

SELECT ( resDueDateBegin >= @Today) & (resDueDateEnd <@Adjust(@Today;0;1;0;0;0;0))

SELECT(resDueDateBegin>=@Today)&(resDueDateEnd最好不要在SELECT语句中对视图本身进行日期筛选

相反,您可以使用按键(或一组键)筛选视图的功能。在这种情况下,您可以使用日期范围作为筛选器

首先,确保视图按两个日期字段排序,然后添加筛选键

下面显示了按日期范围筛选的筛选器,我使用该筛选器筛选动态视图面板的视图,以仅显示日期范围内的文档(由compositeData.limitDays指定的x天),并按特定类别筛选视图(compositeData.catFilter)


使用上面的方法,您应该能够对两个日期列进行过滤。

这是我的扩展:(现在也是时候了)

向量v的结果是



贝弗时间调整

Car,01.01.70 00:00:00 CET - 18.06.2014 23:06:58 CEDT,17.06.2014 23:06:58 CEDT - 01.01.2100 00:00:00 CET
但唯一的问题是时间


18.06.2014 21:22:50 CEDT
我们需要在这里
18.06.2014 23:59:59 CEDT
19.06.2014 00:00:00 CEDT

如果您使用的是新视图,对于XPages,使用文本而不是日期可能更容易。日期时间无法序列化,因此无法将其存储在某些属性中。尽管键可能很好。@Per Henrik Lausten->E非常好的解决方案,但我需要关键向量中的第三个元素…请参阅我的扩展…结果->'Car,01.01.70 21:22:50 CET-18.06.2014 21:22:50 CEDT,17.06.2014 21:22:50 CEDT-01.01.2100 21:22:50 CET'我不太理解您的示例,但您应该能够使用我的示例代码,只添加第三个向量元素(假设您的视图按所有3列排序)@Per Henrik Lausten->+1,谢谢您的示例。顺便说一句,我们这里有3个间隔。resDueDateBegin和resDueDateEnd之间的第一个间隔来自文档本身。现在第二个间隔(矢量中的vDataRange)用于与resDueDateBegin和第三个间隔(矢量中的vDataReange2)相交用于与resDueDateEnd相交。这里的结果是:第一个间隔开始于第二个间隔结束(resDuedatebeginstartDate2)@Per Henrik Lausten,我认为这种方法比时差更合适。你认为呢?
    try {
    var cal = java.util.Calendar.getInstance();
    cal.add(java.util.Calendar.DATE, 1)
    cal.set(java.util.Calendar.HOUR, 0);
    cal.set(java.util.Calendar.MINUTE, 0);
    cal.set(java.util.Calendar.SECOND, 0);
    cal.set(java.util.Calendar.HOUR_OF_DAY, 0);
    var endDate = cal.getTime();

    cal.set(1970, 0, 1,0,0,0);
    var startDate = cal.getTime();

    var vDateRange = session.createDateRange(startDate, endDate);

    var cal2 = java.util.Calendar.getInstance();
    cal2.add(java.util.Calendar.DAY_OF_MONTH, 0)
    cal2.set(java.util.Calendar.HOUR, 0);
    cal2.set(java.util.Calendar.MINUTE, 0);
    cal2.set(java.util.Calendar.SECOND, 0);
    cal2.set(java.util.Calendar.HOUR_OF_DAY, 0);

    var startDate2 = cal2.getTime();

    cal2.set(2100, 0, 1,0,0,0);
    var endDate2 = cal2.getTime();

    var vDateRange2 = session.createDateRange(startDate2, endDate2);


    var v = new java.util.Vector();
    v.addElement("Car");
    v.addElement(vDateRange);
    v.addElement(vDateRange2);
    return v;                       
}catch(e){
    print("view filter error: " + e.toString())
}
Car,01.01.70 00:00:00 CET - 20.06.2014 00:00:00 CEDT,19.06.2014 00:00:00 CEDT - 01.01.2100 00:00:00 CET
Car,01.01.70 00:00:00 CET - 18.06.2014 23:06:58 CEDT,17.06.2014 23:06:58 CEDT - 01.01.2100 00:00:00 CET