Olá pessoal, neste artigo finalizaremos o exemplo criado na parte 3, usando os conceitos de LINQ. Acompanhem:
Se você não viu as partes anteriores desta série de artigos sugiro que as veja clicando aqui.
Continuando nosso exemplo, vá no modo Design do formulário, clique com o botão direito no ComboBox e clique em Edit Items. Na caixa de texto que surge adicione os seguintes itens, como é ilustrado na Figura 01:
Figura 01 – Itens do ComboBox, que serão os filtros do GridView
Agora dê dois cliques em cima do ComboBox para que o evento SelectedIndexChanged seja acionado. Nele iremos montar toda a lógica para que, quando o usuário selecionar determinado item, seja passado a instrução LINQ ao DataSource do GridView.
Vemos abaixo, na Listagem 01, toda a codificação do evento.
Listagem 01 – Evento SelectedIndexChanged do ComboBox
private void cboValores_SelectedIndexChanged(object sender, EventArgs e)
{
ListlstProducts = new List();
lstProducts = CarregarGridView();
BindingSource objBindingSource = new BindingSource();
switch (cboValores.SelectedIndex.ToString())
{
case "0":
objBindingSource.DataSource = from instrucao in lstProducts
where instrucao.ProductName.StartsWith("Ch")
select instrucao;
dgvProdutos.DataSource = objBindingSource;
break;
case "1":
objBindingSource.DataSource = from instrucao in lstProducts
where instrucao.UnitsInStock > 15
orderby instrucao.UnitsInStock
select instrucao;
dgvProdutos.DataSource = objBindingSource;
break;
case "2":
objBindingSource.DataSource = from instrucao in lstProducts
where instrucao.UnitPrice > 25
orderby instrucao.UnitPrice
select instrucao;
dgvProdutos.DataSource = objBindingSource;
break;
case "3":
objBindingSource.DataSource = from instrucao in lstProducts
where instrucao.UnitsInStock < 50
orderby instrucao.UnitsInStock descending
select instrucao;
dgvProdutos.DataSource = objBindingSource;
break;
case "4":
objBindingSource.DataSource = from instrucao in lstProducts
where instrucao.ProductName.EndsWith("s")
select instrucao;
dgvProdutos.DataSource = objBindingSource;
break;
default:
dgvProdutos.DataSource = null;
break;
}
}
Note que começo instanciando a lista genérica do tipo da classe Products, já vista na parte 3, e atribuo a ela o método CarregarGridView, assim tenho a lista carregada com os dados vindos do banco. Depois instancio um objeto da classe BindingSource, necessária para ser a fonte de dados de nosso GridView.
Em meu switch, uso como condição a propriedade SelectedIndex do ComboBox. Assim, dependendo do índice escolhido pelo usuário (lembrando que sempre começa em 0) é realizada a codificação do respectivo operador case.
Note que, dentro de todos os “cases”, a codificação é bem parecida: é atribuído a instrução LINQ a propriedade DataSource do objeto instanciado e o mesmo é passado como DataSource para o GridView.
Perceba também que a cláusula where que é a responsável por definir o filtro de minha busca, e em algumas instruções é usado também o operador orderby, usado para ordenar os registros, em ordem ascendente (padrão) ou descendente.
Os operadores e cláusulas citados aqui podem ser vistos na parte 2.
Finalizando, acrescente ao formulário um botão com o texto Limpar Filtros, com o código da Listagem 02.
Listagem 02 – Botão Limpar Filtros
private void btnLimparFiltros_Click(object sender, EventArgs e)
{
ListlstProducts = new List();
lstProducts = CarregarGridView();
dgvProdutos.DataSource = lstProducts;
}
Assim caso quisermos ver todos os registros após começarmos as filtragens é só clicarmos no botão.
Rode a aplicação e altere os valores do ComboBox. A Figura 02 ilustra o resultado para o filtro de produtos terminados com a letra S.
Figura 02 – Filtro aplicado ao GridView
Disponibilizo o código-fonte desta aplicação clicando aqui.
Assim finalizo a série de artigos sobre LINQ. Muito obrigado a todos!
Fiquem de olho no blog que farei mais artigos abordando outros providers do LINQ, como o LINQ To XML, por exemplo.
Um abraço, e até o próximo artigo.
Wellington Balbo de Camargo
Posts relacionados:
- Codificação Inicial: Introdução ao LINQ – Parte 3
- Expressões de Consulta e Palavras-Chave: Introdução ao LINQ – Parte 2
- Conceitos: Introdução ao LINQ – Parte 1
- LINQ – Language Integrated Query
Postado em C#, LINQ | Marcado como bindingsource, case, combobox, datagridview, LINQ, switch





