Filtrando DataTable apartir de selectOneMenu

3 respostas
T

[b]Boa tarde, pessoal!

Gostaria de saber como posso filtrar uma coluna de uma DataTable da Framework PrimeFaces 1.1 apartir de um selectOneMenu!

Agradecido desde já, Robert

[/b]

3 Respostas

D

Basta associar um componente <f:ajax> ao seu <h:selectOneMenu> e no atributo render passar o id do datatable. Assim quando o listener da requisição ajax processar, ele só precisa mudar o conteudo da lista que é usada para alimentar esse datatable. O datatable será atualizado corrétamente após a requisição ajax ter concluido.

T

OBRIGADO! :D:D:D:D

Vou dar estudada na dica que voce me deu, comecei a migrar uma aplicação Swing para a Web e nunca tinha mechido com Java Web!

Detalhe: INFELIZMENTE estou usando JSF 1.0 e PrimeFaces 1.1. A minha biblioteca "Core" não possui a entao tive que testar a da PrimeFaces 1.1, porém ela não possui o atributo render, somente o atributo "Update"

Se não fosse pedir muito, como soluciono este problema? WARNING: Component "" not found to be updated partially

Eu também nao sei se estou usando o corretamente...

Obrigado mais uma vez, abraços!

Segue o meu código:
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://primefaces.prime.com.tr/ui" prefix = "p"%>
<f:view>

    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <p:resources />
            <title>Restaurar Documentos</title>
            <p:panel style="font-size:12px;bold;" >
                <h:form>
                    <font size="2px"> Contrato: <b><h:outputText value ="4609" /></font>
                    <img src= "" width="20" hspace="550" alt="">
                    <p:commandButton id="restaurar" value="Restaurar Documento" action="#{Manager.confirma}" />
                    <img src= "" width="20" hspace="10" alt="">
                    <p:commandButton id="atualizar" value="Atualizar Tela" />
                </h:form>
            </p:panel>
        </head>
        
        <body bgcolor="silver">
            
            <p>
            <b>Escolha o seu tema: <p:themeSwitcher height="500" /><p>
            <h:form>
            <p:panel style="font-size:12px;bold;" header="Filtros de Busca - Documentos Excluidos"
                     toggleable="true" toggleSpeed="10" >
                
                    <h:outputLabel value="Buscar: " />
                    <h:inputText tabindex="0" size="65" id="filtro" onkeyup="DocExc.filter()" />
                    <img src= "" width="20" hspace="30" alt="  ">
                    <%--  --%>
                    Unidade de Projeto:
                    <h:selectOneMenu id="unidade" value="#{Manager.unidadeSelecionada}" tabindex="1">
                        <f:selectItems value="#{Manager.listaUnidade}" />
                        <p:ajax actionListener="#{Manager.filtraPorUnidade}" event="change"
                                update="DocExc"/>
                    </h:selectOneMenu> <p>

                    Disciplina:
                    <h:selectOneMenu id="disciplina" value="#{Manager.disciplinaSelecionada}" tabindex="2">
                        <f:selectItems value="#{Manager.listaDisciplina}" />
                        <p:ajax actionListener="#{Manager.filtraPorDisciplina}" event="change"
                                update="DocExc"/>
                    </h:selectOneMenu> <img src= "" width="20" hspace="30" alt="  ">

                    Status:
                    <h:selectOneMenu id="status" value="#{Manager.statusSelecionado}" tabindex="3">
                        <f:selectItems value="#{Manager.listaStatus}"  />
                    </h:selectOneMenu> <img src= "" width="20" hspace="30" alt="  ">

                    Tipo de Documento:
                    <h:selectOneMenu id="tipoDoc" value="#{Manager.tipoDocSelecionado}" tabindex="4">
                        <f:selectItems value="#{Manager.listaTipoDocs}" />
                    </h:selectOneMenu>
                <%--</h:form>--%>
            </p:panel>

            <%--<h:form>--%>
                <p:dataTable var="doc" value="#{Manager.listaDocumentosExcluidos}" id="DocExc"
                             selection="#{Manager.selectedRow}" selectionMode="single"
                             rows="10" paginator="true" paginatorPosition="top" dynamic="false"
                             style="text-align:center;font-size:12px;bold;" binding="#{Manager.table}"
                             emptyMessage="Nenhum documento encontrado neste contexto"
                             onselectStart="" update="DocExc"  >

                    <p:column sortBy="#{doc.nDoc}" id="ColunaNDoc" ><font size="1">
                        <f:facet name="header">
                           <h:outputText value = "No. Projectus"/>
                        </f:facet>
                        <h:outputText value = "#{doc.nDoc}" />
                        
                    </p:column>

                    <p:column sortBy="#{doc.nCliente}" id="ColunaNCliente"><font size="1">
                        <f:facet name ="header">
                            <h:outputText value = "No. Cliente" />
                        </f:facet>
                        <h:outputText value = "#{doc.nCliente}" />
                    </p:column>

                    <p:column sortBy="#{doc.status}" id="colunaStatus"><font size="1">
                        <f:facet name ="header">
                            <h:outputText value = "Status" />
                        </f:facet>
                        <h:outputText value = "#{doc.status}" />
                    </p:column>
                        
                    <p:column sortBy="#{doc.titulo}" id="colunaTitulo" ><font size="1">
                        <f:facet name ="header">
                            <h:outputText value = "Titulo" />
                        </f:facet>
                        <h:outputText value = "#{doc.titulo}" />
                    </p:column>

                    <p:column sortBy="#{doc.tipoDocumento}" id="colunaTipoDoc"><font size="1">
                        <f:facet name ="header">
                            <h:outputText value = "Tipo do Documento" />
                        </f:facet>
                        <h:outputText value = "#{doc.tipoDocumento}" />
                    </p:column>

                    <p:column sortBy="#{doc.disciplina}" id="colunaDisciplina"><font size="1">
                        <f:facet name ="header">
                            <h:outputText value = "Disciplina" />
                        </f:facet>
                        <h:outputText value = "#{doc.disciplina}" />
                    </p:column>

                    <p:column sortBy="#{doc.unidadeProjeto}" id="colunaUnidadeProjeto"><font size="1">
                        <f:facet name ="header">
                            <h:outputText value = "Unidade de Projeto" />
                        </f:facet>
                        <h:outputText value = "#{doc.unidadeProjeto}" />
                    </p:column>

                    <p:column sortBy="#{doc.eap}" id="colunaEap"><font size="1">
                        <f:facet name ="header">
                            <h:outputText value = "EAP Fisica" />
                        </f:facet>
                        <h:outputText value = "#{doc.eap}" />
                    </p:column>

                </p:dataTable>
            </h:form>
        </body>
    </html>
</f:view>
T

Eu meio que resolvi este problema, já consigo pegar os itens selecionados pelo usuário na camada View, consigo filtrá-los na camada Controller, porém, gostaria de saber: e agora? como faço para renderizar esta lista de objetos filtrada novamente ao DataTable à partir da camada Controller??

Criado 9 de dezembro de 2010
Ultima resposta 15 de dez. de 2010
Respostas 3
Participantes 2