[RESOLVIDO] Combo c/ milhares registros (Opinião da melhor abordagem)

8 respostas
B

Prezados,

Gostaria da opinião de vcs para a seguinte situação: na minha aplicação preciso mostrar num combobox (selectOneMenu) uma lista de registros. Porém essa lista possui nada menos que 11.000 registros :shock: .

O que fazer neste situação? Se eu carregar um combo com esta qtde de registros a página ficará extremamente lenta… Daí pensei em usar o componente autocomplete do primefaces 3.0, mas também não ficou legal (demorando demais p/ mostrar as sugestões)… O que vcs me sugerem nesta situação?

Obrigado :wink:

8 Respostas

E

Colocar algum filtro antes ?
Eu normalmente faço assim, deixo o combobox (que é de preenchimento obrigatório) desabilitado até um filtro mínimo ser preenchido. Após este preenchimento, faço a busca baseada no filtro com as opções do combobox diminuídas e habilito o combobox.
Ou então faço um componente lookup.

B

emanuelCruz:
Colocar algum filtro antes ?
Eu normalmente faço assim, deixo o combobox (que é de preenchimento obrigatório) desabilitado até um filtro mínimo ser preenchido. Após este preenchimento, faço a busca baseada no filtro com as opções do combobox diminuídas e habilito o combobox.
Ou então faço um componente lookup.

Olá emanuelCruz! Obrigado pela luz (rsrsrsrsr). Vou dar uma pesquisa a respeito. Mas de antemão, gostaria de saber 2 coisas:

  1. Vc já fex o filtro para esta qtde aproximada de registros? Caso sim, funciona bem?

  2. Teria algum material para indicar?

Obrigado :wink:

C

Eu normalmente costumo trabalhar da seguinte maneira:
Coloco um input desabilitado, e um ícone de lupa ao lado, para realizar uma pesquisa.
Ao clicar nesta lupa é aberto um modal com algumas opções de filtro e paginação sob demanda. Os registros são apresentados em uma tabela, onde cada linha possui um ícone para selecionar o registro. Ao selecionar um registro, o modal de pesquisa é fechado automaticamente, e o nome do registro que foi selecionado é apresentado no input que está desabilitado.

Espero ter ajudado!
Abraço

B

Cristiano de Barros:
Eu normalmente costumo trabalhar da seguinte maneira:
Coloco um input desabilitado, e um ícone de lupa ao lado, para realizar uma pesquisa.
Ao clicar nesta lupa é aberto um modal com algumas opções de filtro e paginação sob demanda. Os registros são apresentados em uma tabela, onde cada linha possui um ícone para selecionar o registro. Ao selecionar um registro, o modal de pesquisa é fechado automaticamente, e o nome do registro que foi selecionado é apresentado no input que está desabilitado.

Espero ter ajudado!
Abraço

Isso, eu também faço dessa forma.
Conheço a funcionalidade pelo nome de “Zoom”.

blastec, você pode fazer um auto-complete também, como o emanuelCruz citou.
Ambas são boas soluções.

B

Bruno Cunha:
Cristiano de Barros:
Eu normalmente costumo trabalhar da seguinte maneira:
Coloco um input desabilitado, e um ícone de lupa ao lado, para realizar uma pesquisa.
Ao clicar nesta lupa é aberto um modal com algumas opções de filtro e paginação sob demanda. Os registros são apresentados em uma tabela, onde cada linha possui um ícone para selecionar o registro. Ao selecionar um registro, o modal de pesquisa é fechado automaticamente, e o nome do registro que foi selecionado é apresentado no input que está desabilitado.

Espero ter ajudado!
Abraço

Isso, eu também faço dessa forma.
Conheço a funcionalidade pelo nome de “Zoom”.

blastec, você pode fazer um auto-complete também, como o emanuelCruz citou.
Ambas são boas soluções.

Olá Cristiano. Boa sugestão!!!

Olá Bruno. Até tentei usar o autocomplete do Primefaces 3, porém o desempenho não ficou aceitável… Mas talvez eu tenho implementado de uma forma “pouco otimizada”.

R

Tem esse plugin para o jquery que é bom pra fazer isso:

http://combogrid.justmybit.com/

B

Galera,

Obrigado pelas sugestões. Vou testar algumas soluções e posto a escolhida e o porquê, ok?

Vlws :wink:

B

Olás,

Então, apenas para registrar a solução adotada, eu optei pelo componente autocomplete do Primefaces, pois já utilizo esta bilbioteca em minha aplicação.

Para quem quiser uma boa referência, eu li o seguinte post do Benigno Sales:

http://benignosales.wordpress.com/2010/10/20/componente-primefaces-autocomplete/

As diferenças mais relevantes que implementei em relação ao exemplo, é que eu adicionei a restrição like no meu método de busca (devido ao volume de dados). Outra coisa que proporcionou melhor performance foi configurar as propriedades minQueryLength e queryDelay do componente autocomplete.

Obrigado a todos :wink:

Criado 21 de fevereiro de 2012
Ultima resposta 21 de fev. de 2012
Respostas 8
Participantes 5