P:datatable sort

4 respostas
douglasrauber

Boa Noite!

Galera, tenho uma view, com esse fragmento:

<h:form>
            <p:dataTable id="dataTable" var="s" rowKey="#{s.idSexo}" value="#{mbSexo.sexos}" selectionMode="single">  
                <f:facet name="header">  
                    Sexos Cadastrados
                </f:facet>  

                <p:column sortBy="#{s.idSexo}" headerText="Id">  
                    <h:outputText value="#{s.idSexo}" />  
                </p:column>  

                <p:column sortBy="#{s.descricao}" headerText="Descricao">  
                    <h:outputText value="#{s.descricao}" />  
                </p:column>  
            </p:dataTable>  
        </h:form>

Isso é um exemplo, onde eu preciso ordenar, mas não consigo, aparece no topo da tabela as setinhas para ordenar e tudo, mas ao clicar nada acontece, achei algumas referencias sobre isso na web, mas não entendi como resolver…
Alguém aí sabe como posso fazer para ordenar?
Obrigado

DRauber

4 Respostas

Fexx

Nas colunas eu uso algo como abaixo e funciona, tenta ai.

<p:column sortBy="#{s.idSexo}">
      <f:facet name="header">
	     <h:outputText value="Id" />
      </f:facet>
     <h:outputText value="#{s.idSexo}" />
</p:column>
douglasrauber

Obrigado pela resposta Fexx.

Não deu certo. Como você manda os dados para a tabela?

Dá uma olhada no meu MB e no DAO…
MB

...
    public List&lt;Sexo&gt; getSexos() {
        sexos = sexoDAO().getEntities();
        return sexos;
    }
...

DAO

...
    @Override
    public List&lt;T&gt; getEntities() {
        List&lt;T&gt; entities = (List&lt;T&gt;)session.createCriteria(classe).list();
        return entities;
    }
...

Obrigado

DRauber

Fexx

Veja o trecho do dataTable que usei em um exemplo:

<h:form>
			<p:dataTable id="dataTable" var="mercadoria"
				value="#{mercadoriaMB.mercadorias}" paginator="true" rows="5"
				paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
				rowsPerPageTemplate="5,10,15">
				<p:column>
					<f:facet name="header">#</f:facet>
					<h:outputText value="#{mercadoria.id}" />
				</p:column>
	
				<p:column sortBy="#{mercadoria.nome}">
					<f:facet name="header">
						<h:outputText value="#{msg['label.mercadoria.nome']}" />
					</f:facet>
					<h:link outcome="editarMercadoria" value="#{mercadoria.nome}"
						title="#{msg['label.editar']} #{mercadoria.nome}">
						<f:param name="id" value="#{mercadoria.id}" />
					</h:link>
				</p:column>
	
				<p:column sortBy="#{mercadoria.descricao}">
					<f:facet name="header">
						<h:outputText value="#{msg['label.mercadoria.descricao']}" />
					</f:facet>
					<h:outputText value="#{mercadoria.descricao}" />
				</p:column>
	
				<p:column sortBy="#{mercadoria.quantidade}">
					<f:facet name="header">
						<h:outputText value="#{msg['label.mercadoria.quantidade']}" />
					</f:facet>
					<h:outputText value="#{mercadoria.quantidade}" />
				</p:column>
	
				<p:column sortBy="#{mercadoria.preco}">
					<f:facet name="header">
						<h:outputText value="#{msg['label.mercadoria.preco']}" />
					</f:facet>
					<h:outputText value="#{mercadoria.preco}">
						<f:convertNumber type="currency"  />
					</h:outputText>
				</p:column>
			</p:dataTable>
		</h:form>

MercadoriaMB está assim:

public List getMercadorias() {

if (mercadorias == null) {

mercadorias = service.findAll();

}

return mercadorias;

}

Mas acredito que o problema não seja no MB e sim na view, tente implementar em seu código, pois utilizo dessa maneira e funciona.
tenta fazer as modificações em todas as colunas do dataTable.

testa ai.

Abraços.

Fica com DEUS.

Fexx

troque onde estiver as EL msg:

<h:outputText value="#{msg['label.mercadoria.descricao']}" />

pelos seu atributos, exemplo:

<h:outputText value="#{s.idSexo}" />

Essa EL msg é para outra coisa.

Abraços

Fica com DEUS.

Criado 14 de maio de 2013
Ultima resposta 15 de mai. de 2013
Respostas 4
Participantes 2