Consulta eliminar registro desde grilla

Tengo un pequeño problema tengo un formulario con tabcontrol y varias pestañas y cada pesta tiene una grilla.
y para eliminar un registro registro tengo el siguiente procedimiento para eliminar
private void KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyValue == 46)
    {
        if (MessageBox.Show("¿Desea eliminar este registro?", "Confirmación",                   MessageBoxButtons.YesNo) != DialogResult.Yes)
return;
    GridView view = sender as GridView;
view.DeleteRow(view.FocusedRowHandle);
    }
}
Y me tira un error de de "referencia a objeto no establecida como instancia de un objeto"
El problema que ese procedimiento me funciona cuando usa una grilla en un solo formulario noc si tendrá algo que ver.
prove colocando view=new gridview();  pero no me elimina el registro
No se ti tendrás alguna idea. O alguna ayuda para eliminar un registro de una grilla

1 Respuesta

Respuesta
1
Por lo general, cuando se trabaja con Gridview o DataGridView, este generalmente obtiene sus datos desde un DataTable o un DataSet. Voy a trabajar usando este supuesto ya que en el código que me das no puedo deducir de donde exactamente obtiene sus datos el GridView.
El GrdView, a pesar de que te permite hacer la modificación y eliminación de registros, es solo un visualizador de los datos que se encuentran en su fuente, y cuando uno da la orden de que se renueve la información, éste desecha sus datos, vuelve a consultar a su fuente y muestra los datos en pantalla. Así, cada vez que ejecutas un cambio, en este caso una eliminación, y vuelves a cargar el GridView, no muestra los cambios ya que los datos en el origen (DataTable o DataSet) no han sido modificados.
Lo que hay que hacer para solucionar esto es hacer que los cambios hechos en el GridView se hagan también en el origen (en nuestro caso, un Datadet o un DataTable). Así cada vez que yo hago un cambio en el Gridview, éste sincroniza la información con su fuente y luego vuelve a renovar la grilla mostrando los datos ya modificados.
Para hacer esto puedes usar el siguiente código (en este ejemplo el origen es una Datatable)
GridView grilla = new GridView(); //grilla que muestra los datos
DataTable tabla = new DataTable(); //dataTable que contiene los datos
//obtiene los datos de la BD y la almacena en un DataTable
tabla = Metodo_para_obtener_datos_de_la_BD();
/* El objeto de la clase Binding Source me permite sincronizar
el gridView con el dataTable.
    Así, cada modificación que yo haga en el GridView también se hará
en el DataTable */
BindingSource sincronizadorTabla = new BindingSource();
sincronizadorTabla.DataSource = tabla;
//Enlaza la tabla sincronizada con el gridView
grilla.DataSource = sincronizadorTabla;
Con esto todo cambio que hagas en la grilla también se hará en el origen de los datos. Así, cada vez que quieras actualizar la grilla esta mostrará los últimos cambios que se hicieron.
Debo mencionar que hasta este momento no se ha hecho ningún cambio en la Base de datos, sino que sólo en la información residente en memoria, por lo que si quieres guardar los cambios hechos solo tienes que sincronizar el DataTable o DataSet con la Base de Datos y listo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas