基于单元格值的Xpages数据表单元格颜色

基于单元格值的Xpages数据表单元格颜色,xpages,Xpages,我试图使用xpages数据表,并根据单元格值将列中单元格的颜色设置为不同。我发现,尽管datatable绑定到视图,并且指定了集合(以获取行值),但样式部分似乎不可用 以下是一个例子: <xp:dataTable id="dataTable8" rows="30" var="doc1"> <xp:this.value><![CDATA[#{javascript:var View:NotesView = DivisionsView; View.getAllEn

我试图使用xpages数据表,并根据单元格值将列中单元格的颜色设置为不同。我发现,尽管datatable绑定到视图,并且指定了集合(以获取行值),但样式部分似乎不可用

以下是一个例子:

<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未找到错误。这是否意味着绑定到datatable的数据对其样式部分不可用?有办法做到这一点吗

如有任何建议,将不胜感激

编辑:我无法根据“视图条目”值更改表格单元格样式,这里有一个exmaple抛出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>

我希望您在代码中签入一些内容

首先是绑定数据的代码:

var View:NotesView = DivisionsView;
View.getAllEntriesByKey("ViewName")
什么是分区视图?要绑定的实际代码如下所示:

var View:NotesView = database.getView("ViewName");
View.getAllEntriesByKey("KeyName")
v = doc1.getColumnValues()[1];
if (v=="Yes") {
    "background-color:rgb(255,0,0)"
}
其次,在要添加样式的代码中,您在
if
条件中使用了单个
=
而不是
=
。所以代码应该是这样的:

var View:NotesView = database.getView("ViewName");
View.getAllEntriesByKey("KeyName")
v = doc1.getColumnValues()[1];
if (v=="Yes") {
    "background-color:rgb(255,0,0)"
}

这些建议是否有效?

我希望您在代码中签入一些内容

首先是绑定数据的代码:

var View:NotesView = DivisionsView;
View.getAllEntriesByKey("ViewName")
什么是分区视图?要绑定的实际代码如下所示:

var View:NotesView = database.getView("ViewName");
View.getAllEntriesByKey("KeyName")
v = doc1.getColumnValues()[1];
if (v=="Yes") {
    "background-color:rgb(255,0,0)"
}
其次,在要添加样式的代码中,您在
if
条件中使用了单个
=
而不是
=
。所以代码应该是这样的:

var View:NotesView = database.getView("ViewName");
View.getAllEntriesByKey("KeyName")
v = doc1.getColumnValues()[1];
if (v=="Yes") {
    "background-color:rgb(255,0,0)"
}

这些建议有效吗?

我已经放弃使用数据表,而是通过在表行上重复操作来完成工作。这样,我就可以控制整行的样式,从而控制每个单元格的样式。在datatable中,您似乎无法这样做,因为选项都是基于数据列的。谢谢你的帮助,不过我已经放弃了数据表,而是通过在表行上重复来完成工作。这样,我就可以控制整行的样式,从而控制每个单元格的样式。在datatable中,您似乎无法这样做,因为选项都是基于数据列的。感谢您的帮助,尽管样式表属性不仅为列中的每个值呈现,而且为每行计算。这也包括方面

这意味着,如果列有页眉和/或页脚,则会为这些不可见的行计算样式表属性,但没有行值(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>

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

这意味着,如果列有页眉和/或页脚,则会为这些不可见的行计算样式表属性,但没有行值(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>

...
...

很抱歉,我应该声明DivisionView绑定到自定义控件。这适用于所有样式问题。您的建议是正确的,很抱歉,这是一个打字错误,因为您试图简化要在此处发布的代码。还有其他建议吗?谢谢,请更新您的问题以更正打字错误,这样其他人就不会感到困惑了。代码应该可以正常工作,没有任何问题。变量
doc1
应在
style
属性中可用。是否有其他地方使用了可能导致问题的
doc1
变量。是否更新了原始问题。我已经查看了它是否是唯一的变量,并且它是唯一的,我还将变量名称更改为test,同一问题-参考doc1 not found对不起,我应该声明divisisview绑定到自定义控件。这适用于所有样式问题。您的建议是正确的,很抱歉,这是一个打字错误,因为您试图简化要在此处发布的代码。还有其他建议吗?谢谢,请更新您的问题以更正打字错误,这样其他人就不会感到困惑了。代码应该可以正常工作,没有任何问题。变量
doc1
应在
style
属性中可用。是否有其他地方使用了可能导致问题的
doc1
变量。是否更新了原始问题。我已经查看了它是否是唯一的变量,并且它是唯一的,我还将变量名更改为test,同一问题-参考doc1未找到您是否尝试过在不使用文档值的情况下设置this.style?我还认为这可能发生在页面加载上,在它将文档加载到数据表之前。也许可以尝试使用一个子句来检查doc1是否存在,如果不存在,则传递一个默认样式。嗨,我尝试过在没有文档值的情况下使用this.style,这很有效。我还检查了doc1是否存在-使用doc1.getcolumnvalues()[1]将值放入表中没有问题Right,但dataTable的结构中有一些东西可以在呈现之前检查文档是否存在。我认为有可能您的代码试图在页面加载时编译,而没有加载结构。我可能是错的。我不知道怎样才能证明你的理论。如果你设置一个简单的页面,你会得到同样的结果吗?只是为了排除我是一个eeediot.我已经用上面的代码创建了一个简单的XPage。工作正常,没有任何问题。您是否尝试过在不使用文档值的情况下设置此.style?我还认为这可能发生在页面加载上,在它将文档加载到数据表之前。也许可以尝试使用一个子句来检查doc1是否存在,如果不存在,则传递一个默认样式。嗨,我尝试过在没有文档值的情况下使用this.style,这很有效。我还检查了doc1是否存在-putti