Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
803
Assunto : ASP.NET
Titulo: Criando uma opção 'Todos' em uma combo

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



Em um cenário com uma dropDownList servindo de filtro para gridview, é muito comum precisarmos incluir na dropdownlist uma opção "Todos", para exibir todos os elementos na grid, sem filtro.

Imaginemos que estamos trabalhando com o banco NorthWind, a origem de dados da DropDownList é :

select distinct country from customers

Com isso temos uma lista de paises na dropdown. Já a origem da gridView fica sendo :

Select * from customers where country=@country

Listando os clientes de forma filtrada por país, sendo a dropDown a origem do filtro.

Como adicionar um item a mais na dropdown ?

O vinculo com um dataSource normalmente limpa a dropdownlist e exibe apenas os dados do dataSource. Então como manter um item a mais ?

O segredo está na propriedade AppendDataBoundItens da dropDownList. Com esta propriedade podemos adicionar os elementos vindos do banco, mantendo os existentes.

Assim sendo, mudando o AppendDataBoundItens para true, podemos adicionar o item "Todos" em design e ele será exibido.

Como filtrar a gridView por este item, fazendo com que todos os itens sejam exibidos ?

Para isso precisamos utilizar um pequeno truque com a query. A query inicial, que mostrei acima, poderia ser construida apenas selecionando os campos e o filtro, mas para adicionar este truque será necessário montar a query textualmente no datasource :

Select * from customers where country=@country or @country='Todos'


Explicando :

Se o usuário escolher "Todos", @country='Todos' (o value da dropDown, vc pode personalizar). Nesse caso para todos os registros o critério é verdadeiro e todos são exibidos.

Caso o usuário escolha um país, o registro só será exibido se for do país escolhido.

Mas não esqueça : Se o campo filtrado for numérico ao invés de string, tem que mudar o value para um número qualquer, -99, por exemplo.


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 6/29/2006 6:14:00 PM
nome: Luciano
email: lucianopimenta@clubedelphi.net
comentário:
Muito bom, mas a propriedade esta presente somente no ASP.NET 2.0?
Testei no ASP.NET 1.1 e não tem a propriedade :(


data: 6/21/2006 11:40:00 AM
nome: Luis Ramos
email: lfbramos@bol.com.br
comentário:
Excelente a dica, não sabia da existência deste comando.
Usava para resolver o problema :
select distinct country from customers
union
select 'Todos'

Valeu.


 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br