C# - Localizando registros com DataGridView
Neste artigo veremos como localizar e exibir registros usando o DataGridView e o CurrencyManager. |
Hoje vamos recordar como realizar a busca de dados usando um critério para localizar registros exibidos em um DataGridView executando uma consulta na tabela Customers do banco de dados Northwind.
A string de conexão com o banco de dados será armazenada no arquivo App.Config da aplicação :
Para obter o valor da string de conexão vamos usar a classe ConfigurationManager que requer uma referência ao namespace System.Configuration no projeto via menu Project -> Add Reference :
Vamos usar também o DataView que permite criar diferentes exibições de dados armazenados em um DataTable, e, o CurrencyManager que gerencia uma lista de objetos vinculados.
Recursos Usados:
Criando o projeto Windows Forms
Abra o VS 2017 Community e crie um projeto usando o template Windows Desktop -> Windows Forms App(.NET Framework) e informe o nome WF_DataGridView;
Pela simplicidade do projeto eu não vou criar uma camada de acesso a dados. Considere isso como uma concessão que você quase nunca deve fazer.
A camada de interface com o usuário é o formulário Form1 que possui os seguintes controles:
|
Os namespaces usados no formulário são:
using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
No início do formulário vamos declarar as variáveis do tipo DataView e CurrencyManager:
private DataView dv;
private CurrencyManager cm;
No construtor do formulário vamos chamar o método ConfiguraGridView() cujo código vemos a seguir:
Este método define algumas configurações para o DataGridView usado no formulário.
No evento Load do formulário vamos chamar o método GetDataView() obter um DataView com os dados e exibir no controle DataGridView criando um Currency Manager :
Abaixo temos o código do método GetDataView() que obtém a string de conexão, monta a consulta SQL e preenche um DataTable com os dados obtidos, criando um DataView ordenados pelo nome da primeira coluna :
No evento Click do botão Procurar temos o código que vai realizar a busca pelo critério informado pelo usuário conforme a coluna do DataGridView selecionada :
private void btnLocalizar_Click(object sender, EventArgs e)
{
if (txtCriterio.Text != "")
{
bool parseStatus = false;
switch (dtgv1.SortedColumn.Index)
{
case 0:
// se a ordenação estiver na primeira coluna
// é necessário garantir que o valor da busca seja
// um valor inteiro (caso esta coluna seja um inteiro)
//int j;
//parseStatus = int.TryParse(txtCriterio.Text, out j);
//break;
case 1:
case 2:
// A segunda e terceira coluna são strings
// assim o valor da busca não precisa ser validado
parseStatus = true;
break;
}
if (parseStatus)
{
// Encontra o cliente
int i = dv.Find(txtCriterio.Text);
if (i < 0)
// Não Foi encontrado
MessageBox.Show("Nenhum registro foi encontrado.", "Procurar",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
else
// Reposiciona o registro do grid usndo o CurrencyManager.
cm.Position = i;
}
else
{
MessageBox.Show("O tipos de dados do valor da busca " +
"deve ser do tipo da coluna ordenada.",
"Procurar", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
txtCriterio.Focus();
}
}
else
{
MessageBox.Show("Informe o critério de busca.", "Procurar",
MessageBoxButtons.OK, MessageBoxIcon.Question);
txtCriterio.Focus();
}
}
|
Usamos o método Find do DataView para procurar linhas no DataGridView conforme a chave de classificação usada.
O método Find retorna um inteiro com o índice do DataRowView que corresponde aos critérios de pesquisa. Se mais de uma linha corresponder aos critérios de pesquisa, apenas o índice da correspondência da primeira DataRowView é retornado. Se nenhuma correspondência for encontrada, localizar retornará -1.
Pronto ! Executando o projeto iremos obter o seguinte resultado:
Pegue o projeto aqui : WF_DataGridView.zip
"Há um só corpo e um só Espírito, como também
fostes chamados em uma só esperança da vossa vocação;
Um só Senhor, uma só fé, um só batismo;
Um só Deus e Pai de todos, o qual é sobre todos, e por todos e em todos vós."
Efésios 4:4-6
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
C# - Agenda de Contatos - CRUD Básico (para novatos) - Macoratti
NET - Entity Framework 5 - Operações CRUD (revisitado) - Macoratti
C# - Localizando registros(linhas) com ADO .NET - Macoratti
Localizando registros em um DataTable - Macoratti
DataView - Ordenação e filtragem de dados - Macoratti
C# - Preenchendo um DataGridView - Macoratti
C # - DataGridView Básico - Macoratti
C# - Mestre Detalhes com DataGrid e DataGridView - Macoratti