Mantener la fila seleccionada en un DataGridView después de actualizar

Cuando tenemos un objeto de la clase DataGridView es muy habitual que tengamos que refrescar los datos del mismo y mantengamos la fila que teníamos activa inicialmente.

Para ello vamos a ver el siguiente ejemplo que lo que realiza es lo siguiente:

  1. Guarda el ID (único) de la fila activia inicialmente
  2. Realiza el procesamiento de datos o actualización
  3. Vuelve a fijar la fila que estaba activa inicialmente (recorriendo todo el DataGridView)

Nuestro ejemplo cuenta con un DataGridView (grdEjemplo) enlazado a datos a través de un BindingSource llamado bsEjemplo.

El código es el siguiente:

//Paso 1: Guardar el ID de la fila seleccionada inicialmente
Int64 idseleccionado = -1;
if (grdEjemplo.SelectedRows.Count == 1)
{
    idseleccionado = Convert.ToInt64(((DataRowView)bsEjemplo.Current)["id"].ToString());
}

//Paso 2: Actualizamos los datos del DataGridView mediante el método correspondiente
this.ActualizarDatos();

//Paso 3: Buscamos la fila que teníamos activa inicialmente
if (idseleccionado != -1)
{
    for (int i = 0; i < grdEjemplo.Rows.Count; i++)
    {
        if (idseleccionado == Convert.ToInt64(grdEjemplo.Rows[i].Cells[0].Value.ToString()))
        {
            grdEjemplo.Rows[i].Selected = true;
            //Seleccionamos la primera celda que esté visible. En este caso la 1
            grdEjemplo.CurrentCell = grdEjemplo.Rows[i].Cells[1];
            break;
        }
    }
}
Quizá te interese...
Deja un comentario...
Suscribirme
Notificación de
guest
0 Comentarios
Comentarios en línea
Ver todos los comentarios