我正在尝试使用xpages数据表,并根据单元格值将列中单元格的单元格颜色设置为不同。我发现虽然数据表绑定到视图并且指定了集合(以获取行值),但这似乎不适用于样式部分。
以下是一个例子:
<xp:dataTable id="dataTable8" rows="30" var="doc1">
<xp:this.value><![CDATA[#{javascript:var View:NotesView = DivisionsView;
View.getAllEntriesByKey("ViewName")}]]></xp:this.value>
<xp:column id="column1" style="width:75px;font-family:Tahoma">
<xp:text escape="true" id="computedField1">
<xp:this.value><![CDATA[#{javascript:doc1.getColumnValues()[1]
}]]></xp:this.value>
<xp:this.style><![CDATA[#{javascript:v=doc1.getColumnValues()[1];
if(v=="Yes"){"background-color:rgb(255,0,0)"}}]]></xp:this.style>
</xp:text>
<xp:this.facets>
<xp:label value="Header" id="label1" xp:key="header">
</xp:label>
</xp:this.facets>
</xp:column>
</xp:dataTable>
这只显示了doc1 not found错误。这是否意味着绑定到数据表的数据不适用于它的样式部分?有没有办法做到这一点?
任何建议都将不胜感激!
编辑:我无法根据视图条目值更改表格单元格样式,这里是一个抛出doc1 not found错误的例子:
<xp:column id="column1">
<xp:this.style><![CDATA[#{javascript:v=doc1.getColumnValues()[1];
if(v=="Yes"){"background-color:rgb(255,0,0)"}}]]></xp:this.style>
<xp:text escape="true" id="computedField1">
<xp:this.value><![CDATA[#{javascript:doc1.getColumnValues()[1]
}]]></xp:this.value>
</xp:text>
<xp:this.facets>
<xp:label value="Header" id="label1" xp:key="header">
</xp:label>
</xp:this.facets>
</xp:column>
答案 0 :(得分:1)
stylesheet 属性不仅针对列中的每个值呈现,还针对每一行进行计算。这也是一个方面。
这意味着如果您的列有标题和/或页脚,则会为这些不可见行计算样式表属性,但没有行值( DOC1 )。
如果您更改代码并添加try / catch,则可以看到结果。
<xp:column id="column1">
<xp:this.style>
<![CDATA[#{javascript:
try{
v=doc.getColumnValues()[1];
if(v=="Yes"){"background-color:rgb(255,0,0)"}
}catch(e){
return "background-color:rgb(255,0,255)";
}}]]>
</xp:this.style>
...
...
</xp:column>
答案 1 :(得分:0)
我希望您在代码中检查一些内容。
首先绑定数据的代码:
var View:NotesView = DivisionsView;
View.getAllEntriesByKey("ViewName")
什么是DivisionsView
?要绑定的实际代码如下所示:
var View:NotesView = database.getView("ViewName");
View.getAllEntriesByKey("KeyName")
其次,在您添加样式的代码中,您在=
条件中使用了单==
而不是if
。所以代码就是这样的:
v = doc1.getColumnValues()[1];
if (v=="Yes") {
"background-color:rgb(255,0,0)"
}
这些建议是否有效?
答案 2 :(得分:0)
我放弃了一个数据表,并使用表格行上的重复来完成工作。这样我就可以控制整行的样式,因此每个单元格,你似乎无法在数据表中执行此操作,因为选项都是基于数据列的。谢谢你的帮助