none
FIltrar desde datagridview (similar a excel) RRS feed

  • Pregunta

  • Hola amigos, soy nuevo en este foro mi nombre es Fer, desde Lima-Perú.

    Qusiera que me ayuden con un problema que tengo con respecto a un datagridview, el punto es el sgte:

    tengo un formulario que tiene un dgv en donde se visualiza la informacion que se va guardando en un archivo plato (archivo.txt no sql, no acces) hasta ahi todo conforme, logro guardar la info y logro visualizarla en el dgv, el detalle esta en que quisiera realizar busquedas y filtrar la informacion, algo similar a excel cuando usamos los filtros, ya que en mi formulario tengo varios criterios de busqueda que estan alojados en combos o textbox, quisiera saber si algun programador experimentado o algun usuario que sepa la solucion a este problema me pueda ilustrar con su sapiencia ya que he buscado en muchas fuentes pero solo dan ejemplos con datos guardados en sql o access, algo que por el momento no necesito, y referente a lo que consulto no hay practicamente nada...muchas gracias.

    Nota.

    Tengo este código que al filtrar desde mi combobox, selecciono 1 item y se ubica SOLO en la primera coincidencia nada mas, dejo lo mencionado:

    ****Con esto cargo mis datos al DGV que lo cargo desde 2 Capas con clases c/u*****

    Public Class FrmConsulta
        Dim atributos As New CapaNegocio.ClassEncapsulado
        Dim archivo As New CapaDatos.ClassArchivo

    Sub CargaRegistro()
            For x = 0 To archivo.Miarray.Count - 1
                atributos = archivo.Miarray.Item(x)
                dtgRegistro.Rows.Add(atributos._clase, atributos._codigo, atributos._nombreinst,
                                   atributos._tipodocu, atributos._ndocuidenti, atributos._nomautoridad,
                                   atributos._sexo, atributos._cargo, atributos._tipocargo,
                                   atributos._descrip, atributos._fechainicio, atributos._fechafin,
                                   atributos._vigencia, atributos._nresol, atributos._fecharesol,
                                   atributos._noficio, atributos._fechaoficio, atributos._rtd,
                                   atributos._fechartd, atributos._observaciones)
            Next
        End Sub

    ******Con esto hago la busqueda desde un combobox*************************

       Private Sub cboFiltroClas_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboFiltroClas.SelectedIndexChanged
            For i As Integer = 0 To Me.dtgRegistro.Rows.Count - 2
                For x As Integer = 0 To dtgRegistro.ColumnCount - 1
                    If dtgRegistro.Rows(i).Cells(x).Value.ToString.Contains(Me.cboFiltroClas.Text) Then
                        Me.dtgRegistro.CurrentCell = dtgRegistro.Rows(i).Cells(x)
                        Exit Sub
                    End If
                Next x
            Next i
        End Sub

    La ultima parte sería, si es posible que el mismo código sirva para realzar el filtrado con varios criterios? Gracias!!!!!!! X)

    miércoles, 3 de agosto de 2016 6:18

Respuestas

  • La solución que a mi me parece más sencilla es esta:

    - No cargues los datos directamente del fichero al datagridview. Pásalos del fichero a un datatable, y luego enlaza el datatable mediante databinding con el datagridview.

    - No enlaces el datatable directamente con el datagridview. Toma el defaultview del datatable (es una de sus propiedades) y enlaza este dataview con el datagridview.

    - La "gracia" de haber interpuesto el dataview entre medias del enlace es que el dataview permite filtrar y ordenar. Cuando te apliquen filtros en la pantalla, simplemente se los aplicas a ese dataview que ya está conectando los datos contra el datagridview, y entonces instantáneamente el datagridview queda filtrado en la pantalla.

    miércoles, 3 de agosto de 2016 6:47

Todas las respuestas

  • La solución que a mi me parece más sencilla es esta:

    - No cargues los datos directamente del fichero al datagridview. Pásalos del fichero a un datatable, y luego enlaza el datatable mediante databinding con el datagridview.

    - No enlaces el datatable directamente con el datagridview. Toma el defaultview del datatable (es una de sus propiedades) y enlaza este dataview con el datagridview.

    - La "gracia" de haber interpuesto el dataview entre medias del enlace es que el dataview permite filtrar y ordenar. Cuando te apliquen filtros en la pantalla, simplemente se los aplicas a ese dataview que ya está conectando los datos contra el datagridview, y entonces instantáneamente el datagridview queda filtrado en la pantalla.

    miércoles, 3 de agosto de 2016 6:47
  • Gracias lo intentaré.
    domingo, 4 de septiembre de 2016 4:20