none
Usando o RowFilter em múltiplas colunas RRS feed

  • Pergunta

  • Pessoal bom dia.gostaria de uma ajuda de como fazer esta consulta corretamente. O meu problema é o seguinte, tenho este filtro no meu textbox que busco o nome ou o telefone do contato.

    'Modelo 1

      Private Sub txtBuscaClientes_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtBuscaClientes.TextChanged
    
            Try
    
    
    
                Dim dv As DataView = Me.gvContatos.DataSource
    
                dv.RowFilter = "Nome LIKE '%" & txtBuscaClientes.Text & "' OR Convert(Fone1,'System.String') LIKE '%" & txtBuscaClientes.Text & "%'"
    
                Me.gvContatos.DataSource = dv
    
            Catch ex As Exception
                Throw ex
            End Try
        End Sub

    O problema é que sempre ele busca a última letra do Filter " Nome ". Já na segunda coluna " "' OR Convert(Fone1,'System.String') LIKE '%", está funcionando normalemente qualquer valor que digite ela está filtrando independente se estiver no início, meio ou fim.Gostaria de uma ajuda se possível. Gostaria que o filtro nome também começasse a ser filtrando quando eu digitar alguma letra, e fosse filtrando no início, meio e fim.Quando eu deixou assim

    'Modelo 2 

    dv.RowFilter = "Nome LIKE '%" & txtBuscaClientes.Text & "%'"

    Os nomes são filtrado de acordo o digito tanto no ínicio como no final.

    A agradeço qualquer ajuda..

    terça-feira, 4 de dezembro de 2012 12:25

Respostas

  • Também estou precisando saber estou com o mesmo problema o que o seu.... ver ai se alguém ajuda...eu só conseguir fazendo separado por textbox...assim..:

     Private Sub txtNomeContato_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtNomeContato.TextChanged
            Try
                            DirectCast(datagridContatos.DataSource, DataTable).DefaultView.RowFilter = "Pes_contato_Nome like '%" + txtNomeContato.Text.Trim().Replace("'", "''") + "%'"
                
            Catch ex As Exception
                Throw ex
            End Try
           
        End Sub
    
        Private Sub txtTelefoneContato_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTelefoneContato.TextChanged
           Try
                DirectCast(datagridContatos.DataSource, DataTable).DefaultView.RowFilter = "Pes_contato_Fone1 like '%" + txtNomeContato.Text.Trim().Replace("'", "''") + "%'"
            Catch ex As Exception
                Throw ex
            End Try
        End Sub
    

    • Marcado como Resposta Thyago Analista sexta-feira, 18 de janeiro de 2013 11:11
    terça-feira, 4 de dezembro de 2012 13:23

Todas as Respostas

  • Também estou precisando saber estou com o mesmo problema o que o seu.... ver ai se alguém ajuda...eu só conseguir fazendo separado por textbox...assim..:

     Private Sub txtNomeContato_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtNomeContato.TextChanged
            Try
                            DirectCast(datagridContatos.DataSource, DataTable).DefaultView.RowFilter = "Pes_contato_Nome like '%" + txtNomeContato.Text.Trim().Replace("'", "''") + "%'"
                
            Catch ex As Exception
                Throw ex
            End Try
           
        End Sub
    
        Private Sub txtTelefoneContato_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTelefoneContato.TextChanged
           Try
                DirectCast(datagridContatos.DataSource, DataTable).DefaultView.RowFilter = "Pes_contato_Fone1 like '%" + txtNomeContato.Text.Trim().Replace("'", "''") + "%'"
            Catch ex As Exception
                Throw ex
            End Try
        End Sub
    

    • Marcado como Resposta Thyago Analista sexta-feira, 18 de janeiro de 2013 11:11
    terça-feira, 4 de dezembro de 2012 13:23
  • Também estava com este modelo ai mas vir que tem como fazer um só Filter utilizando o like...

    terça-feira, 4 de dezembro de 2012 14:01