none
Filtrar Datagridview con Textbox en Visual Basic .Net

    Pregunta

  • Hola de antemano muchas gracias por tomarse el tiempo para leer mi pregunta

    tengo un datagridview que lo lleno con el siguiente código:

     Dim command As New SqlCommand("select * from productos", conexion)
            Dim adapter As New SqlDataAdapter(command)
            Dim table As New DataTable()
            adapter.Fill(table)

            DataGridView1.AllowUserToAddRows = False

            DataGridView1.RowTemplate.Height = 120
            Dim imgc As New DataGridViewImageColumn
            DataGridView1.DataSource = table

            imgc = DataGridView1.Columns(4)
            imgc.ImageLayout = DataGridViewImageCellLayout.Stretch

    pero necesito que se filtre al ir escribiendo el nombre del producto o el código del producto en un textbox

    ¿como lo puedo hacer?

    jueves, 10 de noviembre de 2016 0:57

Respuestas

  • Hola eduardohpz,

    Puedes hacer uso del evento TextChanged o KeyPress de tu TextBox para realizar la búsqueda mientras vas escribiendo, solo tendrías que modificar tu consulta para agregar una condición en el Where que tome los datos usando LIKE.

    Algo como :

    Public Sub filtrarDatos(ByVal buscar As String)
        Try
            Using con As New SqlConnection("MiCadenaConexion")
                Dim query = "Select codigo, nombre from productos where nombre LIKE @filtro"
    
                Dim adapter As New SqlDataAdapter(query, con)
                adapter.SelectCommand.Parameters.AddWithValue("@filtro", String.Format("%{0}%", buscar))
    
                Dim table As New DataTable
                adapter.Fill(table)
    
                DataGridView1.DataSource = table
            End Using
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Y cuando se ejecute el evento TextChanged.

     Private Sub txtBuscador_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        Dim filtro As String = CType(sender, TextBox).Text
        If filtro.Trim() <> String.Empty Then  'Si no es vacío filtra
              filtrarDatos(filtro)
        End If
    End Sub


    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 11 de noviembre de 2016 0:30

Todas las respuestas

  • Hola eduardohpz,

    Puedes hacer uso del evento TextChanged o KeyPress de tu TextBox para realizar la búsqueda mientras vas escribiendo, solo tendrías que modificar tu consulta para agregar una condición en el Where que tome los datos usando LIKE.

    Algo como :

    Public Sub filtrarDatos(ByVal buscar As String)
        Try
            Using con As New SqlConnection("MiCadenaConexion")
                Dim query = "Select codigo, nombre from productos where nombre LIKE @filtro"
    
                Dim adapter As New SqlDataAdapter(query, con)
                adapter.SelectCommand.Parameters.AddWithValue("@filtro", String.Format("%{0}%", buscar))
    
                Dim table As New DataTable
                adapter.Fill(table)
    
                DataGridView1.DataSource = table
            End Using
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Y cuando se ejecute el evento TextChanged.

     Private Sub txtBuscador_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        Dim filtro As String = CType(sender, TextBox).Text
        If filtro.Trim() <> String.Empty Then  'Si no es vacío filtra
              filtrarDatos(filtro)
        End If
    End Sub


    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 11 de noviembre de 2016 0:30
  • muy bueno funciona la 100

    mil gracias amigo justo lo que necesitaba



    • Editado eduardohpz domingo, 13 de noviembre de 2016 21:00 error al escribir
    domingo, 13 de noviembre de 2016 21:00