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!!!