首页 > 解决方案 > 如果视图没有文档,则找不到行数据变量

问题描述

我有一个视图面板,我想根据文档中的值设置行中文本的颜色样式。

<xp:viewPanel id="dataView1" var="rowData" rows="5"
    rowClasses="#{javascript:rowData.getColumnValue('objectStatus') == 'Inactive' ? 'status-inactive' : ''}">

如果视图至少有一个文档,这非常有效,但如果视图为空,我会收到以下错误:

com.ibm.xsp.exception.EvaluationExceptionEx:执行 JavaScript 计算表达式
时出错执行 JavaScript 计算表达式时出错
脚本解释器错误,line=1,col=10:[ReferenceError] 'rowData' not found

我猜它与rowData不被创建有关,除非文件存在,但我不知道如何检查它。

我试过了if (rowData != null)!@IsNull(rowData)但我仍然得到同样的错误。

我该如何解决这个问题?

(请注意,我迟到了 XPages 游戏。)

编辑:

感谢大家的输入,但我能够通过简单地检查视图计数来解决这个问题:

if (getComponent('dataView1').getRowCount() > 0) {
  'Inactive'.equals(rowData.getColumnValue('objectStatus')) ? 'status-inactive' : ''
}

编辑2:

Knut 有一个稍微快一点的解决方案,所以我给了他信任。

标签: xpages

解决方案


Knut 正确地解释了您正在尝试做的事情的解决方案。为什么它不起作用的答案略有不同。rowData是一个合适的名称选择,它将是当前行的数据。但是您正在为整个 DataView 设置一个属性。整个 DataView 的当前行是什么?答案是,没有一个,因为您没有处理单独的行。


推荐阅读