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

WebProgramacion > Recursos sobre informática y tecnología > Programacion > C# > Mantener la fila seleccionada en un DataGridView después de actualizar
C#
Autor: Dámaso Velázquez Álvarez

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

Podría interesarte...

Posicionarnos en una fila de un DataGridView
Rutina para posicionarnos por código sobre una fila de un DataGridView
Desactivar una fila en un DataGridView
Código para desactivar la fila activa en un control del tipo DataGridView en un WinForm