XPages选择的值在XPiNC中工作,但不在Web浏览器中工作

时间:2013-08-27 04:22:22

标签: xpages xpages-ssjs

我正在快速将XAgent样式视图导出为ex​​cel。但首先我需要获得符合我在XPage上选择的标准的文档的UNID。我有一个按钮,可以获得找到的文件数量。我已经确认并验证了我的文档基于我选择的值,但在Web浏览器中它始终在警报中返回零文档。现在,按钮中的代码如下:

uifrom = getComponent("from_dtpicker").getValue(); // a date-time picker
uito = getComponent("to_dtpicker").getValue(); // a date-time picker
uitag = getComponent("tag_combox").getValue(); // a combobox

var from:NotesDateTime = session.createDateTime(uifrom);
from.setAnyTime();
var to:NotesDateTime = session.createDateTime(uito);
to.setAnyTime();

var vw:NotesView = database.getView("(Document View by Tag)");
var docUNIDarray:Array = []; // for the quick XAgent excel export later on

if (uitag == "All") {
    var vec:NotesViewEntryCollection = vw.getAllEntries();
} else {
    var vec:NotesViewEntryCollection = vw.getAllEntriesByKey(uitag, true);
}

var total:Number = 0;

var ve:NotesViewEntry = vec.getFirstEntry();
while (ve != null) {
    // document must have StartDate and EndDate
    if (ve.getDocument().hasItem("StartDate") && ve.getDocument().hasItem("EndDate")) {
        var vefrom:NotesDateTime = ve.getDocument().getItemValue("StartDate").elementAt(0);
        vefrom.setAnyTime();
        // as long as the StartDate is between the selected from and to
        if (vefrom >= from && vefrom <= to) {
            if (ve.getDocument().getItemValueString("StaffName") != "Company") {
                docUNIDarray.push(ve.getDocument().getUniversalID());
                total += 1; 
            }
        }
    }
    ve = vec.getNextEntry(ve);
}

view.postScript('alert("total:'+total+', from:'+from+', to:'+to+', tag:'+uitag+'")');

此外,我所做的唯一完全刷新是单击按钮。此页面中也没有范围变量。只有2个日期时间选择器,一个组合框和按钮本身。对此有何解释?我确认代码是正确的,因为它在XPiNC中工作。

的,我得到文件总数应该是18。如果我追加.toJavaDate()从,到,和vefrom,然后我得到10个文件,其是错误的。我已经检查了每个文档的“StartDate”和“EndDate”的基础值,每个值都是时间/日期,如08/12/2013 12:00:00 PM ZE8。我假设将我的代码中的转换和任何日期值转换为NotesDateTime将确保所有类型都相同并且可以进行比较但是对于这个我完全不知道我做错了什么。

1 个答案:

答案 0 :(得分:1)

您需要在比较中取出时间组件。有几种选择可以做到这一点。首先,请查看视图条目而不是文档,并将所有数据放入列中。对于日期值,请使用字符串:

   @Text(@Year(startdate)*10000+@month(startdate)*100+@day(startdate)) 

另一种方法是处理Java Date方法