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 do DataTable;

  • A expressão Nome LIKE '%{0}%' filtra os resultados para que o campo “Nome” contenha o texto digitado no TextBox. 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.

Aprenda do zero ou aprimore seus conhecimentos em C#. Domine os conceitos de Orientação a Objetos e crie sistemas complexos integrados com banco de dados.

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:

CLIQUE AQUI E SAIBA MAIS

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

Tags:

Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?

Não enviamos spam. Seu e-mail está 100% seguro!

Sobre o Autor

Bene Silva Júnior
Bene Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *