[RESOLVIDO] Combo c/ milhares registros (Opinião da melhor abordagem)
8 respostas
B
blastec
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?
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
blastec
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:
Vc já fex o filtro para esta qtde aproximada de registros? Caso sim, funciona bem?
Teria algum material para indicar?
Obrigado
C
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
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.
B
blastec
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
rogeriopaguilar
Tem esse plugin para o jquery que é bom pra fazer isso:
Obrigado pelas sugestões. Vou testar algumas soluções e posto a escolhida e o porquê, ok?
Vlws
B
blastec
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:
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.