ATENCIÓN AL CLIENTE: +34 923 199 148

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;
        }
    }
}
Contenido relacionado