1

我正在尝试使用 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>
4

3 回答 3

1

样式表属性不仅针对列中的每个值呈现,而且针对每一行进行计算。这也包括方面。

这意味着,如果您的列有页眉和/或页脚,则会为这些不可见的行计算样式表属性,但没有行值 ( 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>
于 2013-07-24T11:31:49.357 回答
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)"
}

这些建议是否有效?

于 2013-07-23T11:22:38.213 回答
0

我已经放弃了数据表,并在表格行上使用重复来完成工作。这样我就可以控制整行的样式,因此每个单元格,看起来你不能在数据表中这样做,因为选项都是基于数据列的。谢谢你的帮助

于 2013-07-24T09:38:42.113 回答