none
¿Como filtrar un datagridview con mas de un parametro? RRS feed

  • Pregunta

  • Hola amigos, como podria filtrar los datos de un datagridview con mas de un parametro?, utilizo un combo  con los parametros a filtrar: (Filtrar Todos,Nombre,Categoria,Marca, Color,) y un textbox para capturar el dato a buscar.

    el siguiente codigo me funciona para filtar por un parametro en especifico, me gustaria que al seleccionar el item Filtrar todos, del combo me filtre por todos los parametros.

     Sub FiltrarDatos()
            Dim dv As New DataView(objCapaNegocio.ListarProductos)
    
    If ComboFiltrado.SelectedIndex = 0 Then 'Filtrar todos
                   "Filtrar por todos los campos"
                    DataGridview_Productos.DataSource = dv.ToTable
    
    
                 ElseIf ComboFiltrado.SelectedIndex = 1 Then 'Nombre
                    dv.RowFilter = "Nombre like'%" & txtBuscar.Text & "%'"
                    DataGridview_Productos.DataSource = dv.ToTable
    
    
                  ElseIf ComboFiltrado.SelectedIndex = 2 Then 'Categoria
                    dv.RowFilter = "Categoria like'%" & txtBuscar.Text & "%'"
                    DataGridview_Productos.DataSource = dv.ToTable
    
                  ElseIf ComboFiltrado.SelectedIndex = 3 Then 'Marca
                    dv.RowFilter = "Marca like'%" & txtBuscar.Text & "%'"
                    DataGridview_Productos.DataSource = dv.ToTable
    
                  ElseIf ComboFiltrado.SelectedIndex = 4 Then 'Color
                    dv.RowFilter = "Color like'%" & txtBuscar.Text & "%'"
                    DataGridview_Productos.DataSource = dv.ToTable
    
    end If
    
    End Sub
    Saludos.




    jueves, 25 de agosto de 2016 7:35

Todas las respuestas

  • como podria filtrar los datos de un datagridview con mas de un parametro

    Maticemos eso: un datagridview no se puede filtrar, ni con mas de un parametro ni con un solo parametro. Lo que se filtra son los datos que hay en el origen de datos que luego se vincula con el datagridview. En tu caso concreto, el origen es un DataView que precisamente tiene una columna RowFilter que sirve para ese fin. Basta que le pongas las dos condiciones en el RowFilter, usando una sintaxis parecida a la del lenguaje SQL:

     dv.RowFilter = "Nombre like'%" & txtBuscarNombre.Text & "%' AND Color like'%" & txtBuscarColor.Text & "%'"

    Esa condicion es un vulgar string, por lo que si lo necesitas la puedes construir concatenando fragmentos de manera condicional, dependiendo de lo que te hayan seleccionado en pantalla. Si lo dejas vacio (dv.RowFilter=""), se volveran a mostrar todos los datos que habia en el DataView.

    jueves, 25 de agosto de 2016 12:32