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:
- Guarda el ID (único) de la fila activia inicialmente
- Realiza el procesamiento de datos o actualización
- 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;
}
}
}