Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/06/2007, 19:24
kikerv
 
Fecha de Ingreso: mayo-2007
Mensajes: 2
Antigüedad: 17 años, 9 meses
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!!!