none
¿Cómo conservar la fila seleccionada después de ordenar una columna haciendo clic en el encabezado? RRS feed

  • Pregunta

  • Les explico:

    Suponiendo que tengo una columna con estos datos:

    NUMEROS

    4

    2 <=== Fila seleccionada actual

    3

    5

    Al hacer clic sobre NUMEROS, se ordena la columna y:

    2 <-------- quiero que siga seleccionada esta fila (corrrespondiente al número 2, igual que arriba)

    3 <===== Fila seleccionada luego de ordenar

    4

    5

    Como ven el cursor se queda en la segunda posición, pero al ordenar corresponde a otra fila.

    Yo quiero que al ordenar quede seleccionada la fila original (en el ej. sería la celda que contiene 2)

    ¿Cómo puedo resolver eso?




    • Editado James-2016 sábado, 30 de enero de 2016 3:12
    sábado, 30 de enero de 2016 3:11

Respuestas

  • puedes guardar el valor "clave" de la fila seleccionada y volver a posicionarte en ella después de ordenar con

    Private Sub DGV_DataBindingComplete(sender As Object, e As System.Windows.Forms.DataGridViewBindingCompleteEventArgs) Handles DGV.DataBindingComplete
            If idSeleccionado <> -1 Then
                For i As Integer = 0 To DGV.Rows.Count - 1

                    DGV.Rows(i).Selected = False
                    If idSeleccionado = Convert.ToInt64(DGV.Rows(i).Cells(0).Value.ToString()) Then
                        DGV.ClearSelection()
                        DGV.Rows(i).Selected = True

                        DGV.CurrentCell = DGV.Rows(i).Cells(0)
                        Exit Sub
                    End If
                Next
            End If
        End Sub


    Saludos, Javier J

    • Marcado como respuesta James-2016 martes, 2 de febrero de 2016 18:00
    martes, 2 de febrero de 2016 10:43

Todas las respuestas

  • ¿Que modo de ordenación utilizas? En el modo automático se mantiene la fila que estaba seleccionada antes de ordena ¿Puede que tengas alguna parte del código que te cambie de fila después de hacer la ordenación?

    Saludos, Javier J

    lunes, 1 de febrero de 2016 10:01
  • Bueno en el record set defino BY ORDER Nombre

    y se visualiza ordenada por Nombre. El datagridview está configurado para que se visualice toda la fila seleccionada y cuando ordeno el cursor se mantiene donde está por ejemplo si se encuentra en la fila tres cuando ordeno se sigue manteniendo en la fila tres aunque sea corresponda a otro registro.

    lunes, 1 de febrero de 2016 21:14
  • puedes guardar el valor "clave" de la fila seleccionada y volver a posicionarte en ella después de ordenar con

    Private Sub DGV_DataBindingComplete(sender As Object, e As System.Windows.Forms.DataGridViewBindingCompleteEventArgs) Handles DGV.DataBindingComplete
            If idSeleccionado <> -1 Then
                For i As Integer = 0 To DGV.Rows.Count - 1

                    DGV.Rows(i).Selected = False
                    If idSeleccionado = Convert.ToInt64(DGV.Rows(i).Cells(0).Value.ToString()) Then
                        DGV.ClearSelection()
                        DGV.Rows(i).Selected = True

                        DGV.CurrentCell = DGV.Rows(i).Cells(0)
                        Exit Sub
                    End If
                Next
            End If
        End Sub


    Saludos, Javier J

    • Marcado como respuesta James-2016 martes, 2 de febrero de 2016 18:00
    martes, 2 de febrero de 2016 10:43