Mudança de cor em datatable jsf

Olá pessoal.

Não sei se é nessa parte do fórum que coloca essa duvida. Se não for peço desculpas.

A duvida é o seguinte:

Estou fazendo um sistema de controle de estoque utilizando jsf e primefaces. Eu quero mudar a cor da linha de um datatable quando a quantidade do estoque tiver chegando próximo ao mínimo permitido no estoque. Eu não sei como posso fazer isso.

Aguardo sugestões.

Abraços.

Olá Vinicius, crie um método no seu Bean que retorne uma String com o estilo de acordo com a condição necessária e invoque esse método no style das suas colunas do datatable.

Então rafadelnero, nunca fiz isso. Mas criei esse método no meu bean:

public String verificarEstoque(){
        if(produto.getQuantidade() <= produto.getMinestoque()){
            return "red";
        }
        return null;
    }

E a minha datatable está assim:

<p:dataTable id="tabela" selectionMode="single" selection="#{produtoBean.produto}" rowKey="#{prod.id}" value="#{produtoBean.produtos}" var="prod" emptyMessage="Nenhum registro incluido." paginator="true" rows="10" style="#{produtoBean.verificarEstoque}">
                    <f:facet name="header">
                        LISTA DE PRODUTOS
                    </f:facet>
                    <p:column headerText="NOME" style="text-align: center">
                        <h:outputText value="#{prod.nome}"/>
                    </p:column>
                    <p:column headerText="QUANTIDADE" style="text-align: center">
                        <h:outputText value="#{prod.quantidade}" />
                    </p:column>
                    <p:column headerText="PREÇO DE COMPRA" style="text-align: center">
                        <h:outputText value="#{prod.precocompra}" />
                    </p:column>
                    <p:column headerText="PREÇO DE VENDA" style="text-align: center">
                        <h:outputText value="#{prod.precovenda}" />
                    </p:column>
                    <p:column headerText="ALTERAR - EXCLUIR" style="text-align: center">
                        <p:commandButton action="#{produtoBean.recuperarProduto}" value="EDITAR" title="Editar" onclick="PF('alterarProduto').show();" update=":formAlterarProduto" icon="ui-icon-pencil">
                            <f:setPropertyActionListener target="#{produtoBean.produto}" value="#{prod}"/>
                        </p:commandButton>
                        <p:commandButton value="EXCLUIR" title="Excluir" onclick="PF('confirmation').show();" style="margin-left: 5px" icon="ui-icon-trash">
                            <f:setPropertyActionListener value="#{prod}" target="#{produtoBean.produto}" />
                        </p:commandButton>
                    </p:column>
                </p:dataTable>

Queria saber se o método está correto e se a forma de chamar o método no style está correto.

Att.

Estou querendo a mesma coisa… E aí, resolveu ?

@ViniciusGallo, eu não sei se estás fazendo um projeto de faculdade ou é para o cliente, mas saiba de uma coisa, tentar realizar certo tipos de alterações como essa é como procurar uma brica que nunca vai ser ganha, sugiro fortemente mudar de frameworks ou se sujeitar a Templates pagos disponíveis pela Primefaces.

1 curtida

Tente utilizar a propriedade rowStyleClass do datatable,

2 curtidas