XPages dataTable控件,计算可见

时间:2015-02-09 18:39:57

标签: xpages lotus-notes

我正在尝试学习如何在dataTable上执行计算的可见属性,以便在启用或禁用状态时隐藏字段/行。

下面的代码就是我用过的但不断出错

var userName=rowData.getColumnValue("userName")
var status:NotesView = database.getView("(UserProfile)");
var doc:NotesDocument = status.getDocumentByKey(userName);
var active = doc.getItemValueString("Status")
if(active == "Enabled") {
    return true
}else{
return false
}

2 个答案:

答案 0 :(得分:1)

将代码放入try-catch-block,因为如果用户在视图“(UserProfile)”中并且具有某种状态,则只能看到该部分:

try {
    var userName=rowData.getColumnValue("userName")
    var status:NotesView = database.getView("(UserProfile)");
    var doc:NotesDocument = status.getDocumentByKey(userName);
    var active = doc.getItemValueString("Status")
    if(active == "Enabled") {
        return true;
    } else {
        return false;
    }
} catch (e) {
    return false;
}

答案 1 :(得分:1)

是否在页面加载或部分刷新期间失败?如果是后者,你可能会遇到我在这里提到的问题http://www.intec.co.uk/dataviews-and-nested-repeats/。部分刷新是许多服务器端阶段,在此期间检索页面的服务器端映射,应用浏览器的值以及重新计算数据表的内容。在早期阶段,变量rowData将为空,这意味着doc也将为空。

使用像XPages OpenLog Logger这样的日志记录机制将捕获堆栈跟踪,其中包括它失败的阶段。

使用view.isRenderingPhase()仅运行渲染响应阶段(将HTML写回浏览器的阶段)中的代码。它将避免阶段特定问题并优化性能。如果它是渲染属性,那么这是你需要计算值的唯一阶段; - )