[Logo] Neo Framework Forum
  [Search] Busca   [Recent Topics] Tópicos Recentes   [Members]  Lista de Usuários   [Groups] De volta para a página principal 
[Register] Registrar / 
[Login] Entrar 
Listagem  XML
Índice dos Fóruns -> Dúvidas
Autor Mensagem
Leandro Dupin
Equipe

Membro desde: 21/06/2007 12:46:54
Mensagens: 3
Offline

Tenho uma listagem que na verdade é exibida por um datagrid.
Existe uma forma de colocar ordenação pelos campos desse datagrid? Como nas listagens usando "<t:janelaResultados> / <t:tabelaResultados>" onde o nome do campo se torna um link que ao ser clicado ordena pela coluna em questão.

Agradeço a atenção

-------------------------------------------------
Leandro Lanna Dupin

Desenvolvedor Java - Universidade FUMEC
www.fumec.br
lld.informatica@gmail.com
[Email]
rogel.garcia
Xiita

Membro desde: 17/04/2007 16:35:03
Mensagens: 275
Offline

Leandro existe um flag no NEO que indica se deve ou não ser renderizado um link de ordenação para o dataGrid.

Esse flag é um atributo de sessão chamado TEMPLATE_listagem.

Para habilitar a ordenação para o dataGrid automaticamente você deve colocar um atributo com o nome TEMPLATE_listagem no escopo de requisição.

Existem duas formas, no controller:

Code:
request.setAttribute("TEMPLATE_listagem", "true");


ou no JSP:

Code:
<c:set var="TEMPLATE_listagem" value="true" scope="request"/>


Você pode ainda utilizar o atributo order da tag t:property e indicar como deve ser ordenada a coluna.

Em qualquer um dos casos de ordenação acima, será passado o parâmetro orderBy, isso quer dizer que seu Command (bean da action do controller, segundo parametro do método) deve possuir um atributo orderBy. No DAO será necessário utilizar o método order do QueryBuilder para indicar a ordenação.

Quando utilizar essa ordenação, não é feito um submit do formulário, ou seja, suas informações serão perdidas se o Command não for de sessão.
Para colocar um command como um command de sessão, é necessária a seguinte anotacao na sua action:

Code:
@Command(session=true)
 public ModelAndView(WebRequestContext request, Bean bean){
 ...
 }


Lembrando que se existir outra action que utilize o mesmo bean, deve ser colocada @Command(session=true) nos outros métodos também.

Fique atento, pois o formulário de sessão altera um pouco o comportamento da tela (se o usuário sair da página e voltar a página mais tarde os dados do formulário ainda terão os valores configurados anteriormente)

Nada impede ainda de colocar o seu próprio código no header do column do dataGrid

Code:
<n:dataGrid ...>
      <n:column>
          <n:header>
                 <a href="faça o que desejar aqui"> Nome </a>
          </n:header>
          <n:body>
                  <t:property name="nome"  />
          </n:body>
      </n:column>
 </n:dataGrid>


Você pode ainda alterar o Template do Property (PropertyTag.jsp) para adicionar ordenações padrão da maneira que desejar.

Leandro Dupin
Equipe

Membro desde: 21/06/2007 12:46:54
Mensagens: 3
Offline

Obrigado.

-------------------------------------------------
Leandro Lanna Dupin

Desenvolvedor Java - Universidade FUMEC
www.fumec.br
lld.informatica@gmail.com
[Email]
alexcampos
Equipe
[Avatar]

Membro desde: 26/09/2007 11:13:14
Mensagens: 7
Offline

pessoal.. como é que eu faço pra colocar um link pra outra página num <t:property> de uma listagem?

atten...
rogel.garcia
Xiita

Membro desde: 17/04/2007 16:35:03
Mensagens: 275
Offline

Voce pode fazer assim:

Code:
 <n:column header="titulo">
     <n:link url=""><t:property name="..."/></n:link>
 </n:column>
 


ou vc pode alterar o template do property (PropertyTag.jsp) e adicionar um atributo dinamico aí, o seu jsp poderia ficar assim:

<t:property name="..." link="..."/>

Você terá que alterar o template do property para o atributo link ter alguma funcionalidade
priscicruz
CRUD

Membro desde: 27/09/2007 22:02:18
Mensagens: 31
Offline

Olá!

Utilizei a listagem e esta funcionando somente com objetos String.
Como faço pra utilizar objetos do tipo date ou integer??
POr exemplo listar por dataNasc ou código?


Meu DAO é assim:
Code:
 public class LoteDAO extends GenericDAO<Lote> {
 
     @Override
     //updateListagemQuery: Atualiza a query de listagem, recebe um objeto da mesma classe do filtro do CRUD
     public void updateListagemQuery(QueryBuilder<Lote> query, FiltroListagem _filtro) {
         LoteFiltro filtro = (LoteFiltro) _filtro;
         query.whereLike("lote.nome", filtro.getNome());
        
     }
 }


Meu filtro:

Code:
public class LoteFiltro extends FiltroListagem {
     String nome;
     
     public String getNome() {
         return nome;
     }
 
     public void setNome(String nome) {
         this.nome = nome;
     }
    
 }


O Model:
Code:
@Entity
 public class Lote implements java.io.Serializable {
     
     private Integer codigo;
     private String nome;
     private Date dataNasc;
     private Origem origem;
     
     @Id
     @GeneratedValue(strategy=GenerationType.AUTO)
     public Integer getCodigo() {
         return codigo;
     }
     public void setCodigo(Integer codigo) {
         this.codigo = codigo;
     }
     @MaxLength(9)
     @DescriptionProperty
     @Required
     public String getNome() {
         return nome;
     }
     public void setNome(String nome) {
         this.nome = nome;
     }
     
     @Temporal
     @Required /*É obrigatório o preenchimento deste campo*/
     public Date getDataNasc() {
         return dataNasc;
     }
     
     public void setDataNasc(Date dataNasc) {
         this.dataNasc = dataNasc;
     }
 
     @Required
     @ManyToOne
     public Origem getOrigem() {
         return origem;
     }
 
     public void setOrigem(Origem origem) {
         this.origem = origem;
     }
     
 }


E o Listagem .jsp

Code:
<%@ taglib prefix="n" uri="neo"%>
 <%@ taglib prefix="t" uri="template"%>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 
 <t:listagem>
       <t:janelaFiltro>
         <t:tabelaFiltro>
             <t:property name="nome"/>
         </t:tabelaFiltro>
     </t:janelaFiltro>
     
     <t:janelaResultados>
         <t:tabelaResultados>
             <t:property name="codigo"/>
             <t:property name="nome"/>
             <t:property name="dataNasc"/>
             <t:property name="origem"/>            
         </t:tabelaResultados>
     </t:janelaResultados>
 </t:listagem>
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

Priscila, da maneira que você fez está correto,

Apenas certifique que o Date que você está usando pertençe ao pacote java.sql.Date.

Obrigado.

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
 
Índice dos Fóruns -> Dúvidas
Ir para:   
Powered by JForum 2.1.7 © JForum Team