none
Filtrar DataGridView RRS feed

  • Pergunta

  • Boa Noite, eu tenho este código para filtrar a minha DataGridView, mas eu gostaria de saber se era possível filtrar as 4 colunas da minha DGV. Para já, o código apenas filtra a primeira coluna.

    Obrigado

                //FILTRAR
                foreach (DataGridViewRow row in dgv1.Rows)
                    row.Visible = (row.Cells[0].Value.Equals(textBoxPesquisar.Text));

                //LIMPAR FILTRO
                foreach (DataGridViewRow row in dgv1.Rows)
                    if (textBoxPesquisar.Text == "")
                    {
                        row.Visible = true;
                    }

    terça-feira, 6 de dezembro de 2016 22:06

Respostas

  • Olá,

    Se deseja filtrar, pesquisando por as 4 colunas e se qualquer uma contiver o termo digitado mostre na grid, faz assim:

    //FILTRAR
    foreach (DataGridViewRow row in dgv1.Rows)
       row.Visible = (row.Cells[0].Value.Equals(textBoxPesquisar.Text)) || 
                           (row.Cells[1].Value.Equals(textBoxPesquisar.Text)) ||
                           (row.Cells[2].Value.Equals(textBoxPesquisar.Text)) ||
                           (row.Cells[3].Value.Equals(textBoxPesquisar.Text));

    OBS: Caso queira que pesquise por uma parte apenas do texto mude o Equals por Contains

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta joao1999joao quarta-feira, 7 de dezembro de 2016 15:18
    quarta-feira, 7 de dezembro de 2016 10:14

Todas as Respostas

  • Olá,

    Se deseja filtrar, pesquisando por as 4 colunas e se qualquer uma contiver o termo digitado mostre na grid, faz assim:

    //FILTRAR
    foreach (DataGridViewRow row in dgv1.Rows)
       row.Visible = (row.Cells[0].Value.Equals(textBoxPesquisar.Text)) || 
                           (row.Cells[1].Value.Equals(textBoxPesquisar.Text)) ||
                           (row.Cells[2].Value.Equals(textBoxPesquisar.Text)) ||
                           (row.Cells[3].Value.Equals(textBoxPesquisar.Text));

    OBS: Caso queira que pesquise por uma parte apenas do texto mude o Equals por Contains

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta joao1999joao quarta-feira, 7 de dezembro de 2016 15:18
    quarta-feira, 7 de dezembro de 2016 10:14
  • Olá, se eu mudar o Equals por Contains dá erro. Alguma solução?
    quarta-feira, 7 de dezembro de 2016 15:19
  • Vai ter que converter para string, então para substituir o Equals, precisa mudar por .ToString().Contains

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    quarta-feira, 7 de dezembro de 2016 15:49
  •  Porque o "row" dá erro?


    private void textBoxPesquisar_KeyDown(object sender, KeyEventArgs e)
            {

                if (e.KeyCode == Keys.Enter)
                {
                    foreach (DataGridViewRow row in dgv1.Rows)
                        if (textBoxPesquisar.Text == "")
                        {
                            row.Visible = true;
                        }

                        else
                        {
                            foreach (DataGridViewRow row in dgv1.Rows)
                                row.Visible = (row.Cells[0].Value.Equals(textBoxPesquisar.Text)) ||
                                (row.Cells[1].Value.Equals(textBoxPesquisar.Text)) ||
                                (row.Cells[2].Value.Equals(textBoxPesquisar.Text)) ||
                                (row.Cells[3].Value.Equals(textBoxPesquisar.Text));

                        }
                }
            }



    • Editado joao1999joao quarta-feira, 7 de dezembro de 2016 19:06
    quarta-feira, 7 de dezembro de 2016 19:05
  • É porque já existe uma variavel com esse nome um pouco pra cima, substitua por qualquer outro nome. Mas não esqueça de substituir onde ela é utilizada (dentro do foreach)

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    quarta-feira, 7 de dezembro de 2016 19:09