O controle DataGridView em C# é amplamente utilizado em aplicações Windows Forms para exibir e manipular dados em forma de tabela. Um dos recursos mais úteis é a capacidade de pesquisar ou filtrar registros, facilitando a busca de informações específicas dentro de uma grande quantidade de dados. Neste post, vamos explorar como pesquisar registros por DataGridView em uma aplicação C#. Você verá como preencher o controle com dados, criar uma barra de pesquisa e aplicar filtros de forma eficiente.
Passo 1: Configurando o ambiente
Antes de começar, certifique-se de ter os seguintes componentes prontos em seu projeto:
- Um DataGridView para exibir os dados.
- Um TextBox para inserir a palavra-chave de pesquisa.
- Um Button para acionar a pesquisa ou você pode usar a pesquisa conforme o usuário digita no TextBox (com evento de tecla pressionada).
Passo 2: Populando o DataGridView
Primeiramente, vamos preencher o DataGridView
com dados. Neste exemplo, utilizaremos um DataTable com dados fictícios para simplificar. Em uma aplicação real, você pode conectar-se a um banco de dados (como SQL Server, MySQL, etc.) e preencher o DataGridView
com dados da tabela do banco.
Veja como preencher o DataGridView com um DataTable:
using System;
using System.Data;
using System.Windows.Forms;
public partial class Form1 : Form
{
DataTable dataTable = new DataTable();
public Form1()
{
InitializeComponent();
PopulateDataGridView();
}
// Método para preencher o DataGridView
private void PopulateDataGridView()
{
// Definir colunas
dataTable.Columns.Add("ID", typeof(int));
dataTable.Columns.Add("Nome", typeof(string));
dataTable.Columns.Add("Cidade", typeof(string));
// Adicionar algumas linhas de exemplo
dataTable.Rows.Add(1, "Maria", "São Paulo");
dataTable.Rows.Add(2, "José", "Rio de Janeiro");
dataTable.Rows.Add(3, "Ana", "Belo Horizonte");
dataTable.Rows.Add(4, "Pedro", "Curitiba");
dataTable.Rows.Add(5, "Lucas", "Brasília");
// Atribuir o DataTable ao DataGridView
dataGridView1.DataSource = dataTable;
}
}
Neste exemplo, criamos um DataTable
, adicionamos algumas colunas e linhas fictícias, e então vinculamos o DataTable
ao DataGridView
utilizando a propriedade DataSource
.
Passo 3: Adicionando a barra de pesquisa
Agora vamos criar a barra de pesquisa usando um TextBox e adicionar o código que irá filtrar os dados com base no que o usuário digitar. O evento TextChanged
do TextBox será utilizado para atualizar os resultados à medida que o texto é digitado.
Veja como adicionar a barra de pesquisa:
private void txtSearch_TextChanged(object sender, EventArgs e)
{
string filterText = txtSearch.Text;
(dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("Nome LIKE '%{0}%' OR Cidade LIKE '%{0}%'", filterText);
}
Neste código:
- Utilizamos a propriedade
RowFilter
do DefaultView do DataTable. Ela permite que você aplique uma expressão de filtro baseada nas colunas doDataTable
; - A expressão
Nome LIKE '%{0}%'
filtra os resultados para que o campo “Nome” contenha o texto digitado noTextBox
. A mesma lógica se aplica para a coluna “Cidade”.
Passo 4: Melhorando a experiência do usuário com a pesquisa
Você pode personalizar ainda mais o comportamento da pesquisa. Por exemplo, vamos adicionar um botão de Limpar Pesquisa, que apaga o texto e exibe novamente todos os dados:
private void btnClear_Click(object sender, EventArgs e)
{
txtSearch.Clear(); // Limpa o campo de pesquisa
(dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Empty; // Remove o filtro
}
Neste exemplo, ao clicar no botão de Limpar, o campo de texto é limpo e o filtro de pesquisa é removido, exibindo todos os registros novamente.
Passo 5: Pesquisando por outras colunas
Caso deseje filtrar os dados com base em outras colunas, basta modificar a expressão de filtro na propriedade RowFilter
. Por exemplo, para pesquisar por ID e Cidade, a expressão seria:
string filterText = txtSearch.Text;
(dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("ID LIKE '%{0}%' OR Cidade LIKE '%{0}%'", filterText);
Agora, a pesquisa irá funcionar também para o campo de ID.
Passo 6: Validação de entrada
Para melhorar a robustez do código, é uma boa prática validar a entrada do usuário. Você pode verificar se o valor digitado é numérico antes de tentar filtrar por colunas que requerem números, como o ID.
Veja um exemplo simples de validação:
private void txtSearch_TextChanged(object sender, EventArgs e)
{
string filterText = txtSearch.Text;
if (int.TryParse(filterText, out int id))
{
(dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("ID = {0} OR Cidade LIKE '%{1}%'", id, filterText);
}
else
{
(dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("Nome LIKE '%{0}%' OR Cidade LIKE '%{0}%'", filterText);
}
}
Nesse exemplo, se o usuário digitar um número, a pesquisa será realizada na coluna ID, além da coluna Cidade.
Exemplo completo:
Veja o código completo de uma aplicação Windows Forms que implementa uma barra de pesquisa no DataGridView:
using System;
using System.Data;
using System.Windows.Forms;
public partial class Form1 : Form
{
DataTable dataTable = new DataTable();
public Form1()
{
InitializeComponent();
PopulateDataGridView();
}
private void PopulateDataGridView()
{
dataTable.Columns.Add("ID", typeof(int));
dataTable.Columns.Add("Nome", typeof(string));
dataTable.Columns.Add("Cidade", typeof(string));
dataTable.Rows.Add(1, "Maria", "São Paulo");
dataTable.Rows.Add(2, "José", "Rio de Janeiro");
dataTable.Rows.Add(3, "Ana", "Belo Horizonte");
dataTable.Rows.Add(4, "Pedro", "Curitiba");
dataTable.Rows.Add(5, "Lucas", "Brasília");
dataGridView1.DataSource = dataTable;
}
private void txtSearch_TextChanged(object sender, EventArgs e)
{
string filterText = txtSearch.Text;
(dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("Nome LIKE '%{0}%' OR Cidade LIKE '%{0}%'", filterText);
}
private void btnClear_Click(object sender, EventArgs e)
{
txtSearch.Clear();
(dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Empty;
}
}
O DataGridView em C# é uma ferramenta poderosa para exibir e manipular dados. Implementar uma barra de pesquisa nele torna as suas aplicações mais dinâmicas e fáceis de usar, permitindo que os usuários filtrem rapidamente as informações que estão procurando. Utilizando o método RowFilter
do DataView
, você pode aplicar filtros simples ou complexos de forma eficiente e elegante.
CONHEÇA O CURSO COMPLETO DE C# COM + DE 100 AULAS PRÁTICAS. Tenha acesso vitalício e certificado de conclusão.
CLIQUE NA IMAGEM ABAIXO E CONFIRA MAIS DETALHES:
Dúvidas ou sugestões sobre como pesquisar registros por DataGridView em C#? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits
Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?
Sobre o Autor
0 Comentários