Clicar num Primefaces button para carregar uma Datatable filtrada

0 respostas
jsfprimefacesjava
jMarcel

Olá pessoal.

Em um form na minha página inicial, tenho um painel com botões para exibir valores de quantidades obtidas de acordo com certos critérios. Ao clicar em algum desses botões, quero carregar uma Datatable, já filtrada pelo mesmo parâmetro que exibe sua respectiva quantidade que é exibida no botão (essa Datatable está localizada em outro arquivo xhtml).

<h:form id="kpiForm">
<p:panel id="kpiPanel" >
    <p:button id="bt1" value="#{demandasController.qtdX}" />
    <p:button id="bt2" value="#{demandasController.qtdY}" />
    <p:button id="bt3" value="#{demandasController.qtdZ}" outcome="/app/demandas/index" /> <!-- clicando nesse botão, é feito apenas um direcionamento para outra página que apresenta a tabela não filtrada -->
</p:panel>
</h:form>

A clase controller possui as propriedades que retornam os valores que são exibidos dentro dos botões (para resumir, mostrarei apenas qtdX, pois qtdY e qtdZ são análogas):

public String getQtdX() {
return LoadQtdX().toString();
}

//setter omitido

private List<Demandas> LoadQtdX() {
    List<Demandas> listQtdX = DemandasFacade.findQtdX();
    return listQtdX;
}

Em minha classe façade tenho:

public List<Demandas> findAmountX() {
    return (List<Demandas>) getEntityManager().createNamedQuery("Demandas.findQtdX", Demandas.class).getResultList();
}

E na minha classe da entidade eu tenho a named query:

@NamedQuery(name = "Demandas.findAmountX", query = "SELECT COUNT(d.id) FROM Demandas d WHERE d.situacao.idSituacao = 3"),

Na datatable eu tenho uma coluna que contém os valores para filtragem, cujos critérios são utilizados conforme a named query acima:

<ui:composition>
<h:form id="DemandasListForm">    
<p:panel id="PanelListForm" header="Título do Painel">

    <p:dataTable id="datalist"
                 value="#{demandasController.items}"
                 rowKey="#{item.id}"
                 var="item"
                 selection="#{demandasController.selected}"
                 filteredValue="#{demandasController.filteredDemandas}"
                 widgetVar="demandasTable">

        <!-- algumas colunas omitidas -->

        <p:column sortBy="#{item.id}" filterBy="#{item.id}" >
            <f:facet name="header">
                <h:outputText value="id"/>
            </f:facet>
            <h:outputText value="#{item.id}"/>
        </p:column>    

        <p:column sortBy="#{item.status.status}" filterBy="#{item.status.status}" filterMatchMode="in" >
            <f:facet name="filter">
                <p:selectCheckboxMenu label="Status" onchange="PF('demandasTable').filter()" >
                    <f:selectItems value="#{demandasController.statusListCombo}" />
                </p:selectCheckboxMenu>
            </f:facet>
            <h:outputText value="#{item.status.status}"/>
        </p:column>    
    </p:dataTable>

</p:panel>
</h:form>
</ui:composition>

Eu pesquisei para tentar desenvolver uma solução, mas não consegui solucionar.

Alguém pode me ajudar?

Agradeço desde já.

Criado 11 de junho de 2018
Respostas 0
Participantes 1