如果视图没有文档,则找不到行数据变量
Row data var not found if view has no document
我有一个视图面板,我想根据文档中的值设置行中文本颜色的样式。
<xp:viewPanel id="dataView1" var="rowData" rows="5"
rowClasses="#{javascript:rowData.getColumnValue('objectStatus') == 'Inactive' ? 'status-inactive' : ''}">
如果视图至少有一个文档,这将非常有效,但如果视图为空,则会出现以下错误:
com.ibm.xsp.exception.EvaluationExceptionEx: Error while executing JavaScript computed expression
Error while executing JavaScript computed expression
Script interpreter error, 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 的解决方案稍微快一些,所以我相信他。
Knut 正确地解释了您要执行的操作的解决方案。为什么它不起作用的答案略有不同。 rowData
是一个合适的名称,它将成为当前行的数据。但是您要为整个 DataView 设置 属性。整个 DataView 的当前行是什么?答案是,没有一个,因为您处理的不是单独的一行。
您可以使用 if (typeof rowData !== 'undefined') ...
进行测试。
如果视图为空,则 rowData 为 'undefined'.
<xp:viewPanel id="viewPanel1" var="rowData" rows="5"
rowClasses="#{javascript:
if (typeof rowData !== 'undefined')
rowData.getColumnValue('objectStatus') == 'Inactive' ? 'status-inactive' : ''
}">
(此解决方案可能比 .getRowCount() 快几毫秒 :-))
我有一个视图面板,我想根据文档中的值设置行中文本颜色的样式。
<xp:viewPanel id="dataView1" var="rowData" rows="5"
rowClasses="#{javascript:rowData.getColumnValue('objectStatus') == 'Inactive' ? 'status-inactive' : ''}">
如果视图至少有一个文档,这将非常有效,但如果视图为空,则会出现以下错误:
com.ibm.xsp.exception.EvaluationExceptionEx: Error while executing JavaScript computed expression
Error while executing JavaScript computed expression
Script interpreter error, 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 的解决方案稍微快一些,所以我相信他。
Knut 正确地解释了您要执行的操作的解决方案。为什么它不起作用的答案略有不同。 rowData
是一个合适的名称,它将成为当前行的数据。但是您要为整个 DataView 设置 属性。整个 DataView 的当前行是什么?答案是,没有一个,因为您处理的不是单独的一行。
您可以使用 if (typeof rowData !== 'undefined') ...
进行测试。
如果视图为空,则 rowData 为 'undefined'.
<xp:viewPanel id="viewPanel1" var="rowData" rows="5"
rowClasses="#{javascript:
if (typeof rowData !== 'undefined')
rowData.getColumnValue('objectStatus') == 'Inactive' ? 'status-inactive' : ''
}">
(此解决方案可能比 .getRowCount() 快几毫秒 :-))