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