以这种方式使用Primefaces Datatable: 数据表的每个对象都有保存在数据库中的属性颜色取决于它的颜色,它将是它的行的颜色。 在没有选择该行的行黑色的情况下,由于字体是黑色的,因此数据不可读。 如果是行白色并且我选择了行,则数据也不可读,因为如果选择字体变为白色。
1 - 任何关于如何通过考虑第一种情况来解决这个问题的建议将适用于所有深色,第二种情况适用于所有浅色?
2 - 也是根据一个语句中的颜色属性着色整行的任何解决方案,而不是在每一列中都得到这种颜色(style =" background-color:#{lottiBean.getColor(lotto)}&# 34;&GT)
<p:dataTable id="lottiTable" widgetVar="lottiTable" var="lotto"
resizableColumns="true" selectionMode="single"
selection="#{lottiBean.selectedLotto}" rowKey="#{lotto.idLotti}"
value="#{lottiBean.allLottis}" rowsPerPageTemplate="5,10,25,50" rows="10"
style="padding-top:10px;padding-bottom:10px"
sortBy="#{lotto.dataLotto.time}" sortOrder="DESCENDING"
paginator="true" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown} {Exporters}">
<f:facet name="{Exporters}">
<p:commandLink id="excel" ajax="false">
<p:graphicImage library="images" name="excel.png" width="24" />
<p:dataExporter type="xls" target="lottiTable" fileName="Lotti" />
</p:commandLink>
<p:commandLink id="pdf" ajax="false" immediate="true">
<p:graphicImage library="images" name="pdf.png" width="24" />
<p:dataExporter type="pdf" target="lottiTable" fileName="Lotti" />
</p:commandLink>
</f:facet>
<p:column headerText="#{messages.label_unita_operativa}" filterBy="" style="background-color: #{lottiBean.getColor(lotto)}" >
<h:outputText value="#{lottiBean.getUoCode(lotto)}" />
</p:column>
<p:column headerText="#{messages.label_codiceLotti}" filterBy="#{lotto.codiceLotti}"
sortBy="#{lotto.codiceLotti}" style="background-color: #{lottiBean.getColor(lotto)}">
<h:outputText value="#{lotto.codiceLotti}" />
</p:column>
这里是我的颜色方法:
public String getColor(Lotti lotti) {
String colorValue=null;
try {
if (lotti != null) {
if (lotti.getCrLottiuos() != null && lotti.getCrLottiuos().iterator().hasNext())
colorValue = lotti.getCrLottiuos().iterator().next().getIdUo().getIdColore().getCodiceColore();//GET COLOR FROM DATABASE AS HEXA VALUE EX:#FFFFF0
}
} catch (Exception ex) {
colorValue = null;
System.out.println(ex.getMessage());
}
return colorValue;
}
答案 0 :(得分:0)
您的需求并不是很清楚,但这里有一个如何在p:databale
中添加列的解决方案,以显示保存在数据库中的颜色,这可能会对您有所帮助:
<p:column headerText="coulor" >
<div style="display: compact;" >
<span class="ui-button-text">
<span
style="overflow:hidden;
width:1em;height:1em;display:block;
border:solid 1px #000;text-indent:1em;
white-space:nowrap;
background-color:##{lotti.color}">
</span>
</span>
</div>
</p:column>
在对一行数据表进行着色时,可以使用rowStyleClass
重新排列一行:
rowStyleClass="#{ lotti.color == 'ff3d3d' ? 'redClass' : lotti.color == '3D46FF' ? 'bleuClass' : null }
访问primefaces展示,了解有关如何调整行样式的更多信息:http://www.primefaces.org/showcase/ui/data/datatable/rowColor.xhtml