none
¿Cómo puedo congelar una fila en un datagridview? RRS feed

  • Pregunta

  • Quiero que una fila en particular quede siempre fija en la parte de arriba (o sea como la primera fila).

    Considerando además que las filas están en orden alfabético, pero quiero que esa nunca se ordene ni se mueva de la primera fila

    ¿Es posible hacer eso?

    sábado, 7 de mayo de 2016 12:01

Respuestas

  • Hola,

    Puedes congelar una fila utilizando .Frozen.

            'Inmovilizo la fila 1 (posición 0)
            DataGridView1.Rows(0).Frozen = True
    
            'Color de fondo para distinguirla de los demás
            DataGridView1.Rows(0).DefaultCellStyle.BackColor = Color.Aquamarine

    Y le en el evento SortCompare de tu DGV, debes cancelar el proceso de orden cuando el índice sea 0 (osea la fila 1), para que no la tome en cuenta al momento de ordenar.

      Private Sub DataGridView1_SortCompare(sender As Object, e As DataGridViewSortCompareEventArgs) Handles DataGridView1.SortCompare
            If e.RowIndex1 = 0 Or e.RowIndex2 = 0 Then
                e.Handled = True
            End If
        End Sub

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta James-2016 domingo, 8 de mayo de 2016 4:34
    domingo, 8 de mayo de 2016 0:13

Todas las respuestas

  • No. No es posible.

    Imagino que sí es posible, que incluyas el texto de tu primera fila dentro del header. Que pintes tu primera fila dentro del header, como si fuese una fila (además de pintar el header, claro).

    Si tipeas cellpainting en el buscador de este mismo subforo, vas a encontrar ejemplos de como hacerlo.

    sábado, 7 de mayo de 2016 12:45
  • He encontrado otra solución, ya me desanimé de hacerlo así como pensaba inicialmente, además al parecer no es posible, gracias de todas formas.
    • Editado James-2016 sábado, 7 de mayo de 2016 23:53
    sábado, 7 de mayo de 2016 23:53
  • Hola,

    Puedes congelar una fila utilizando .Frozen.

            'Inmovilizo la fila 1 (posición 0)
            DataGridView1.Rows(0).Frozen = True
    
            'Color de fondo para distinguirla de los demás
            DataGridView1.Rows(0).DefaultCellStyle.BackColor = Color.Aquamarine

    Y le en el evento SortCompare de tu DGV, debes cancelar el proceso de orden cuando el índice sea 0 (osea la fila 1), para que no la tome en cuenta al momento de ordenar.

      Private Sub DataGridView1_SortCompare(sender As Object, e As DataGridViewSortCompareEventArgs) Handles DataGridView1.SortCompare
            If e.RowIndex1 = 0 Or e.RowIndex2 = 0 Then
                e.Handled = True
            End If
        End Sub

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta James-2016 domingo, 8 de mayo de 2016 4:34
    domingo, 8 de mayo de 2016 0:13
  • gracias, ¡sí se podía!
    domingo, 8 de mayo de 2016 4:34