Foros del Web » Programación para mayores de 30 ;) » .NET »

DataGridView - Problema de Actualización

Estas en el tema de DataGridView - Problema de Actualización en el foro de .NET en Foros del Web. Que tal, soy primerizo con esto del .Net C#, y pues me acabo de encontrar con algo que no he podido encontrarle solucion, he buscado ...
  #1 (permalink)  
Antiguo 13/06/2007, 19:24
 
Fecha de Ingreso: mayo-2007
Mensajes: 2
Antigüedad: 17 años
Puntos: 0
De acuerdo DataGridView - Problema de Actualización

Que tal, soy primerizo con esto del .Net C#, y pues me acabo de encontrar con algo que no he podido encontrarle solucion, he buscado por todos lados y nada.

El problema es que tengo dos formularios (Form1, Form2), en Form1 tengo un DataGridView con cientos de registros. Este DataGridView lo lleno en mi DataLayer:


public static DataSet TraeDatos()
{
SqlCommand SQLCOMMAND = new SqlCommand(int Tipo);
SqlDataAdapter SQLDATAADAPTER;
SqlParameter SQLPARAMETER;
DataSet DATASET;
try
{
SQLCOMMAND = new SqlCommand("Datos_Por_Fecha");
SQLCOMMAND.CommandType = CommandType.StoredProcedure;
SQLCOMMAND.Connection = new SqlConnection(strconexion);
SQLDATAADAPTER = new SqlDataAdapter(SQLCOMMAND);


SQLPARAMETER = new SqlParameter("@TIPO", SqlDbType.Int);
SQLPARAMETER.Value = Tipo;
SQLCOMMAND.Parameters.Add(SQLPARAMETER);

//EXECUTE
SQLCOMMAND.Connection.Open();
DATASET = new DataSet();
SQLDATAADAPTER.Fill(DATASET);
return DATASET;
}
catch (Exception e)
{ throw e; }
finally
{
if ((SQLCOMMAND != null) && (SQLCOMMAND.Connection != null))
{
if (SQLCOMMAND.Connection.State == ConnectionState.Open)
SQLCOMMAND.Connection.Close();
}
}
}

Pues como pueden ver traigo mi info a traves de este Procedimiento Almacenado, y se lo paso a una variable DataSet, que declaro asi:

Public DataSet ds
.
.
.

ds = DL.TraeDatos(Tipo);
DataGridView1.DataSource = ds.Tables[0];

Aqui le asigno a mi DataGridView la informacion, pues una vez llena de info, di la opcion de darle Doble-Click a cada fila, y ahi es cuando entra mi Form2, en este Form2 el usuario puede modificar la informacion que me traje del Proc. Almacenado, pueden grabar los cambios a traves de otro proc. Almacenado:


public static void Actualiza(int ID, int llamada, string Codigo, string Cuenta,
string Paterno, string Materno, string Nombre)
{
SqlCommand SQLCOMMAND = new SqlCommand();
SqlDataAdapter SQLDATAADAPTER;
SqlParameter SQLPARAMETER;

try
{
SQLCOMMAND = new SqlCommand("Actualizar");
SQLCOMMAND.CommandType = CommandType.StoredProcedure;
SQLCOMMAND.Connection = new SqlConnection(Strconexion);
SQLDATAADAPTER = new SqlDataAdapter(SQLCOMMAND);

SQLPARAMETER = new SqlParameter("@ID", SqlDbType.Int);
SQLPARAMETER.Value = ID;
SQLCOMMAND.Parameters.Add(SQLPARAMETER);

SQLPARAMETER = new SqlParameter("@ID", SqlDbType.Int);
SQLPARAMETER.Value = Llamada;
SQLCOMMAND.Parameters.Add(SQLPARAMETER);

SQLPARAMETER = new SqlParameter("@CODIGO", SqlDbType.Char);
SQLPARAMETER.Value = Codigo;
SQLCOMMAND.Parameters.Add(SQLPARAMETER);

SQLPARAMETER = new SqlParameter("@CUENTA ", SqlDbType.Char);
SQLPARAMETER.Value = Cuenta;
SQLCOMMAND.Parameters.Add(SQLPARAMETER);

SQLPARAMETER = new SqlParameter("@PATERNO ", SqlDbType.Char);
SQLPARAMETER.Value =Paterno ;
SQLCOMMAND.Parameters.Add(SQLPARAMETER);

SQLPARAMETER = new SqlParameter("@MATERNO", SqlDbType.Char);
SQLPARAMETER.Value = Materno;
SQLCOMMAND.Parameters.Add(SQLPARAMETER);

SQLPARAMETER = new SqlParameter("@NOMBRE", SqlDbType.Char);
SQLPARAMETER.Value = Nombre;
SQLCOMMAND.Parameters.Add(SQLPARAMETER);

SQLCOMMAND.Connection.Open();
SQLCOMMAND.ExecuteNonQuery();
}
catch (Exception e)
{ throw e; }
finally
{
if ((SQLCOMMAND != null) && (SQLCOMMAND.Connection != null))
{
if (SQLCOMMAND.Connection.State == ConnectionState.Open)
SQLCOMMAND.Connection.Close();
}
}
}

La forma en la que despliego el Form2 es:

this.Hide();
Form2 PopUpWindow = new Form2 ();
PopUpWindow.ShowDialog();

Una vez que se Actualiza la info en la Base de Datos, cierro el Form2 y vuelvo a cargar mi Form1 con: this.show();

Pero el problema en si radica en que mi DataGridView no refresca la información que contiene ya he tratado con:

- DataSet.GetChanges (HasChanged)
- con el .Refresh tanto del DGView como del Dataset

Quisiera que me dieran su opinion o puntos de vista para verificar que es lo que puedo hacer para actualizar mi info, la unica solucion que encontre desde el principio fue borrar al DataGridView, Volver a ejecutar el Proc almacenado (Parte superior), pero pues este formulario maneja miles de registros a traves de un servidor que esta en otro estado del pais y pues si tarda mucho tiempo, y perdida del mismo, que me sugieren

Muchas Gracias por cualquier comentarios, de antemano mis humildes Agradecimientos!!!
  #2 (permalink)  
Antiguo 14/06/2007, 03:11
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 4 meses
Puntos: 9
Re: DataGridView - Problema de Actualización

Hola kikerv.
Pienso que al cerrar Form2 y querer refrescar el grid de Form1, lo único que hay que hacer es:
Código:
DataSet ds;
ds = DL.TraeDatos(Tipo);
DataGridView1.DataSource = ds.Tables[0];
De estra forma vuelves a recuperar todos los registros en su estado actual...
Esto es lo que te tarda tanto?
__________________
..:: moNTeZIon ::..
  #3 (permalink)  
Antiguo 14/06/2007, 11:46
 
Fecha de Ingreso: mayo-2007
Mensajes: 2
Antigüedad: 17 años
Puntos: 0
Re: DataGridView - Problema de Actualización

Que tal, moNTeZIon!!!

Si de hecho, el volver a ejecutar el procedimiento almacenado para traerme de la BD los nuevos registros es lo que quiero evitar, ando buscando alguna forma de actualizar el dataset sin necesidad de ejecutar el proc para volverlo a llenar.

Por que asi, lo estoy haciendo ahorita, una vez que actualizo algun registro llamo la funcion que realiza el llenado del grid y es el que hace la ejecucion de la consulta para traerme la info de la BD, basicamente, esta yendo a la BD cada vez que hay un solo cambio, ¿Habra alguna forma de evitar estar ejecutando la consulta que me llena el Grid de info?

Cualquier comentario, lo agradezo de antemano!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:36.