none
Buscar un valor en un datagridview y seleccionar filas

    Pregunta

  • Hola, primero que todo os pido perdon por el tema, he buscado en el foro varias respuestas pero no he sabido implementarla en mi caso. He logrado buscar en un datagridview un texto en cualquier columna y encontrarlo, recibo el resultado de todas las lineas que lo contiene mediante el siguiente código en VB usando Microsoft VisualStudio 2015:

    Function Buscar(ByVal TextoABuscar As String, ByVal Columna As String, ByRef grilla As DataGridView) As Boolean

    ......

    Dim lineas As IEnumerable(Of DataGridViewRow) = From row As DataGridViewRow In grilla.Rows.Cast(Of DataGridViewRow)()

    From celda As DataGridViewCell In row.Cells

    Where celda.OwningRow.Equals(row) And InStr(celda.Value.ToString.ToUpper, TextoABuscar.ToUpper)

    Select row

    y MsgBox(obj.Count) me devuelve la cantidad de lineas.

    Pero no logro, y aqui es donde os pido ayuda, seleccionar todas las filas en "grilla" que estan en "lineas".

    Saludos y gracias.

    miércoles, 24 de agosto de 2016 11:09

Respuestas

  • Hola Raimundo Ferrer,

    [-] ... Pero no logro, y aqui es donde os pido ayuda, seleccionar todas las filas en "grilla" que estan en "lineas".

    Pero sólo tendrías que recorrer el IEnumerable. 

    - Primero verifica si la selección múltiple de "grilla" está habilitada.

    - Luego sólo recorrerías mediante un For Each para seleccionar las filas, y mediante su propiedad Index obtienes su posición.

            Dim lineas As IEnumerable(Of DataGridViewRow)....
    
            'Limpiamos la selección
            grilla.ClearSelection()
    
            'Si hay datos
            If lineas.Count > 0 Then
                For Each line In lineas
                    grilla.Rows(line.Index).Selected = True
                Next
            End If

    Resultado :

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    miércoles, 24 de agosto de 2016 19:42
  • Muchas gracias Joel, ya había encontrado la solución por mi mismo y la iba a publicar y justo veo la tuya que es exactamente igual excepto que usé "if lineas.Any() then". Saludos

    jueves, 25 de agosto de 2016 9:50

Todas las respuestas

  • Hola Raimundo Ferrer

    Revisa este post, dónde realizan un ejemplo similar al que necesitas.

    Filtro DataGridview

    Saludos y suerte!

     

    Javier

    miércoles, 24 de agosto de 2016 13:05
  • Hola Raimundo Ferrer,

    [-] ... Pero no logro, y aqui es donde os pido ayuda, seleccionar todas las filas en "grilla" que estan en "lineas".

    Pero sólo tendrías que recorrer el IEnumerable. 

    - Primero verifica si la selección múltiple de "grilla" está habilitada.

    - Luego sólo recorrerías mediante un For Each para seleccionar las filas, y mediante su propiedad Index obtienes su posición.

            Dim lineas As IEnumerable(Of DataGridViewRow)....
    
            'Limpiamos la selección
            grilla.ClearSelection()
    
            'Si hay datos
            If lineas.Count > 0 Then
                For Each line In lineas
                    grilla.Rows(line.Index).Selected = True
                Next
            End If

    Resultado :

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    miércoles, 24 de agosto de 2016 19:42
  • Muchas gracias Joel, ya había encontrado la solución por mi mismo y la iba a publicar y justo veo la tuya que es exactamente igual excepto que usé "if lineas.Any() then". Saludos

    jueves, 25 de agosto de 2016 9:50