我正在尝试学习如何在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
}
答案 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写回浏览器的阶段)中的代码。它将避免阶段特定问题并优化性能。如果它是渲染属性,那么这是你需要计算值的唯一阶段; - )