<p:dataTable>
最後の列にチェックボックスが付いた があります。チェックボックスのステータスに基づいてテーブルの行に色を付けたい。
<p:dataTable var="acs" value="#{myBean.listaRevogaveis}"
emptyMessage="#{rotulo.mensagemSemDados}" paginator="true"
rows="10" id="tableacs"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}">
<p:column headerText="Nome" sortBy="#{acs.nome}"
filterBy="#{acs.nome}">
<h:outputText value="#{acs.nome}" />
</p:column>
<p:column headerText="Address" sortBy="#{acs.address}" filterMatchMode="contains"
filterBy="#{acs.address}" filterMaxLength="8">
<h:outputText value="#{acs.address}" />
</p:column>
<p:column headerText="Perfil" sortBy="#{acs.cdPerfil}"
filterBy="#{acs.cdPerfil}" filterMaxLength="2">
<h:outputText value="#{acs.cdPerfil}" />
</p:column>
<p:column headerText="Cadastramento">
<h:outputText value="#{acs.tsSolicitacao}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</p:column>
<p:column headerText="Concedido">
<h:outputText value="#{acs.concedidoPor}" />
</p:column>
<p:column headerText="Revogar">
<p:selectBooleanCheckbox value="#{acs.ativo}" >
<p:ajax event="valueChange" oncomplete="toggleColor(this, #{acs.ativo}" listener="#{myBean.checkBox}" update="@form"/>
</p:selectBooleanCheckbox>
</p:column>
</p:dataTable>
そのため、トグルすると、#{acs.ativo}
その行に別の背景色が表示されます。
この質問の答えに続いて、これを私のxhtmlに追加しようとしました:
<style type="text/css">
.linhaDestacada { background-color: red !important;}
</style>
<script type="text/javascript">
function toggleColor(col, status) {
var linha = jQuery(col).parent();
if(status) {
linha.removeClass('linhaDestacada');
} else {
linha.addClass('linhaDestacada');
}
}
</script>
しかし、それは役に立たない。関数が呼び出されているかどうかを確認するためにいくつかのアラートを設定しました。ただし、tagName、またはlinha
変数のプロパティを表示しようとすると、null が返されます。
別の興味深い点があります。コールバックは、チェックボックスの前の値で呼び出されています。ボックスがチェックされている場合、javascripttoggleColor()
は で false をstatus
受け取り、チェックされていない場合は true を受け取ります。
チェックボックスの切り替えと一緒に行の背景の切り替えを行うにはどうすればよいですか?