none
Como filtrar Datagridview sem QUERY (Ou com Inner Join) RRS feed

  • Pergunta

  • Tenho uma datagridview que quero filtrar pelo nome de uma pessoa, mas essa datagridview recebe dados de um Inner Join, ou seja, não posso fazer query em uma tabela. Há outro jeito?
    sexta-feira, 11 de novembro de 2016 19:10

Respostas

  • Olá,

    Se você não quer fazer nenhum tipo de query e trabalhar apenas com o Grid, pode fazer assim (não é tão performático):

    string pesquisa = "Teste";
    
    foreach(DataGridViewRow row in dataGridView1.Rows)
    {
      if (row.Cells[0].Value != null)
        row.Visible = row.Cells[0].Value.ToString().ToLower().Contains(pesquisa.ToLower());
    }

    Para limpar o filtro:

    foreach(DataGridViewRow row in dataGridView1.Rows)
    {
      if (row.Cells[0].Value != null)
        row.Visible = true;
    }

    Apenas fique atento para o detalhe, eu coloquei como se a coluna que deseja pesquisar fosse a primeira (Indice 0), se for outra precisa mudar.

    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

    sexta-feira, 11 de novembro de 2016 19:23

Todas as Respostas

  • Olá,

    Se você não quer fazer nenhum tipo de query e trabalhar apenas com o Grid, pode fazer assim (não é tão performático):

    string pesquisa = "Teste";
    
    foreach(DataGridViewRow row in dataGridView1.Rows)
    {
      if (row.Cells[0].Value != null)
        row.Visible = row.Cells[0].Value.ToString().ToLower().Contains(pesquisa.ToLower());
    }

    Para limpar o filtro:

    foreach(DataGridViewRow row in dataGridView1.Rows)
    {
      if (row.Cells[0].Value != null)
        row.Visible = true;
    }

    Apenas fique atento para o detalhe, eu coloquei como se a coluna que deseja pesquisar fosse a primeira (Indice 0), se for outra precisa mudar.

    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

    sexta-feira, 11 de novembro de 2016 19:23
  • Esse seria para CSharp, não teria para VB.NET?

    sexta-feira, 11 de novembro de 2016 19:27
  • Tentei mas deu erro! :/

    Até que pesquisa certinho, mas quando eu apago o textbox pra escrever outra coisa ele dá bug

    Código:

      Public Sub FiltrarNome()
            Dim pesquisa As String = txtprocura.Text
    
            For Each row As DataGridViewRow In Servicos_mensaisDataGridView.Rows
                If row.Cells(0).Value IsNot Nothing Then
                    row.Visible = row.Cells(0).Value.ToString().ToLower().Contains(pesquisa.ToLower())
                End If
            Next
        End Sub
    
    
    
    
    
    
    
    
     Private Sub txtprocura_TextChanged(sender As Object, e As EventArgs) Handles txtprocura.TextChanged
            FiltrarNome()
            If txtprocura.Text = "" Then
                For Each row As DataGridViewRow In Servicos_mensaisDataGridView.Rows
                    If row.Cells(0).Value IsNot Nothing Then
                        row.Visible = True
                    End If
                Next
            End If
        End Sub

    sexta-feira, 11 de novembro de 2016 19:34
  • Qual erro dá? Talvez seja só um detalhe

    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

    sexta-feira, 11 de novembro de 2016 19:38
  • pegue a lista gerada e se voce estiver procurando uma entidade , da pra usar o .Select(x=>x.variavelQueEuQuero)

    vou se voce montar a consulta via linq da pra usar o contain, que ele vai fazer a consulta como se fosse um like do sql server

    sexta-feira, 11 de novembro de 2016 22:37
  • Boa tarde,

    Devido a falta de interação do autor dessa pergunta,

    essa thread está sendo fechada. Caso o problema ainda

    esteja ocorrendo, favor abrir uma nova thread.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 16 de novembro de 2016 11:55
    Moderador