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

Problema actualización datagrid despues de INSERT C#

Estas en el tema de Problema actualización datagrid despues de INSERT C# en el foro de .NET en Foros del Web. Ante todo buenas noches. Estoy haciendo una aplicacion en C# con Windows Forms y tengo un problema. Tengo 3 Datagrids relacionados, y a la hora ...
  #1 (permalink)  
Antiguo 22/01/2012, 14:36
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 5 meses
Puntos: 2
Problema actualización datagrid despues de INSERT C#

Ante todo buenas noches.

Estoy haciendo una aplicacion en C# con Windows Forms y tengo un problema.

Tengo 3 Datagrids relacionados, y a la hora de añadir un registro en uno mediante un insert, este datagrid no se actualiza, lo he intentado de varias formas pero no logro conseguirlo.

Este es el método donde hago el insert:

Código:
public void addCliente( string dni, string nombre, string apellidos, string telefono,
                                string direccion, string num_cliente_noah )
        {
            try
            {
                string path = Application.StartupPath;
                string cadena = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + "\\bd.mdb;Persist Security Info=False";
                OleDbConnection conexion = new OleDbConnection( cadena );

                string sql = "INSERT INTO CLIENTES(DNI,NOMBRE,APELLIDOS,TELEFONO,DIRECCION,NUM_CLIENTE_NOAH,NUM_CLIENTE_INTERNO) VALUES (@DNI, @NOMBRE, @APELLIDOS, @TELEFONO, @DIRECCION, @NUM_CLIENTE_NOAH, @NUM_CLIENTE_INTERNO)";
                OleDbCommand orden = new OleDbCommand( sql, conexion );
                orden.Parameters.Add( new OleDbParameter( "@DNI", OleDbType.VarChar ) );
                orden.Parameters["@DNI"].Value = dni;
                orden.Parameters.Add( new OleDbParameter( "@NOMBRE", OleDbType.VarChar ) );
                orden.Parameters["@NOMBRE"].Value = nombre;
                orden.Parameters.Add( new OleDbParameter( "@APELLIDOS", OleDbType.VarChar ) );
                orden.Parameters["@APELLIDOS"].Value = apellidos;
                orden.Parameters.Add( new OleDbParameter( "@TELEFONO", OleDbType.VarChar ) );
                orden.Parameters["@TELEFONO"].Value = telefono;
                orden.Parameters.Add( new OleDbParameter( "@DIRECCION", OleDbType.VarChar ) );
                orden.Parameters["@DIRECCION"].Value = direccion;
                orden.Parameters.Add( new OleDbParameter( "@NUM_CLIENTE_NOAH", OleDbType.VarChar ) );
                orden.Parameters["@NUM_CLIENTE_NOAH"].Value = num_cliente_noah;
                orden.Parameters.Add( new OleDbParameter( "@NUM_CLIENTE_INTERNO", OleDbType.VarChar ) );
                orden.Parameters["@NUM_CLIENTE_INTERNO"].Value = num_cliente_noah + "/" + DateTime.Now.Year;

                orden.Connection.Open();
                orden.ExecuteNonQuery();
                orden.Connection.Close();

                // TO DO: Hacer que se actualice sin tener que reiniciar la puta pp
                Application.Restart();
            }
            catch( Exception ex )
            {
                MessageBox.Show( ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error );
            }
        }
¿Qué tendría que hacer para después del insert, el datagrid me obtuviera de nuevo todos los datos de la tabla? Si cierro y abro la aplicación si me los vuelve a cargar, por lo que creo que necesito esa carga que se hace al inicio, hacerla en el momento que yo quiera. ¿Como puedo hacerlo?

Gracias
  #2 (permalink)  
Antiguo 22/01/2012, 17:00
Avatar de othix  
Fecha de Ingreso: mayo-2011
Ubicación: Guatemala
Mensajes: 92
Antigüedad: 13 años
Puntos: 9
Respuesta: Problema actualización datagrid despues de INSERT C#

Lo mismo que haces en el LOAD()

Datagrid1.datasource=MetodoQueTraeLaData()
Datagrid1.databind()
__________________
"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas."
  #3 (permalink)  
Antiguo 22/01/2012, 17:38
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema actualización datagrid despues de INSERT C#

El problema es que no se cual es el metodo "MetodoQueTraeLaData()", en el dataset, cada tabla que consulto tiene su GetData(), pero no se como acceder a el.
  #4 (permalink)  
Antiguo 24/01/2012, 01:09
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema actualización datagrid despues de INSERT C#

Alguien me orienta?
  #5 (permalink)  
Antiguo 24/01/2012, 07:04
Avatar de sebas_20_jv  
Fecha de Ingreso: agosto-2009
Ubicación: Medellin, Colombia
Mensajes: 59
Antigüedad: 14 años, 8 meses
Puntos: 3
Respuesta: Problema actualización datagrid despues de INSERT C#

Buenos dias,
Podrias mostrar la parte del load donde cargas el Grid ??
para ver por donde es la cosa... Saludos.
  #6 (permalink)  
Antiguo 24/01/2012, 14:07
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema actualización datagrid despues de INSERT C#

Hola sebas, gracias por tu respuesta.

Este es mi metodo load:

Código:
private void Form1_Load( object sender, EventArgs e )
        {
            // TODO: esta línea de código carga datos en la tabla 'bdDataSet.REPARACIONES' Puede moverla o quitarla según sea necesario.
            this.rEPARACIONESTableAdapter.Fill( this.bdDataSet.REPARACIONES );
            // TODO: esta línea de código carga datos en la tabla 'bdDataSet.PROTESISXCLIENTE' Puede moverla o quitarla según sea necesario.
            this.pROTESISXCLIENTETableAdapter.Fill( this.bdDataSet.PROTESISXCLIENTE );
            // TODO: esta línea de código carga datos en la tabla 'bdDataSet.CLIENTES' Puede moverla o quitarla según sea necesario.
            this.cLIENTESTableAdapter.Fill( this.bdDataSet.CLIENTES );

        }
Después de meter un cliente mediante la insert le pongo esta linea:

Código:
            this.cLIENTESTableAdapter.Fill( this.bdDataSet.CLIENTES );
Pero tampoco me actualiza el grid.

A ver si me puedes orientar un poco :)
  #7 (permalink)  
Antiguo 24/01/2012, 16:15
Avatar de sebas_20_jv  
Fecha de Ingreso: agosto-2009
Ubicación: Medellin, Colombia
Mensajes: 59
Antigüedad: 14 años, 8 meses
Puntos: 3
Respuesta: Problema actualización datagrid despues de INSERT C#

Hola Amigo, La verdad no se cual sera la forma en como enlazas esos dataset al Grid,
Pero puedes intentar metiendo todo en una funcion por ejemplo :

public void CargarDatos()
{

// TODO: esta línea de código carga datos en la tabla 'bdDataSet.REPARACIONES' Puede moverla o quitarla según sea necesario.
this.rEPARACIONESTableAdapter.Fill( this.bdDataSet.REPARACIONES );
// TODO: esta línea de código carga datos en la tabla 'bdDataSet.PROTESISXCLIENTE' Puede moverla o quitarla según sea necesario.
this.pROTESISXCLIENTETableAdapter.Fill( this.bdDataSet.PROTESISXCLIENTE );
// TODO: esta línea de código carga datos en la tabla 'bdDataSet.CLIENTES' Puede moverla o quitarla según sea necesario.
this.cLIENTESTableAdapter.Fill( this.bdDataSet.CLIENTES );
}

Luego en el load pones :

private void Form1_Load( object sender, EventArgs e )
{
CargarDatos();
}

Y esa misma funcion la llamas cuando hagas el Insert...
  #8 (permalink)  
Antiguo 24/01/2012, 18:18
Avatar de totobycrg  
Fecha de Ingreso: enero-2012
Ubicación: México D.F.
Mensajes: 27
Antigüedad: 12 años, 3 meses
Puntos: 5
Respuesta: Problema actualización datagrid despues de INSERT C#

Easy ;):

Código de la funcion que hace una consulta a SQL y luego llena el DataGrid
Cita:
private void fillGrid()
{
string sQuery = String.Empty;
try
{
if (ConnSQL.State != ConnectionState.Open)
ConnSQL.Open();
string Level = string.Empty;
sQuery = "SELECT PagoID AS 'ID', Cuenta, Cheque, Banco, Importe, Fecha_Recepcion AS 'Recepcion',Clave_Motivo AS 'Clave Motivo' FROM Pagos_Recibidos WHERE UserID = " + Cifra.Decrypt(Session["id"].ToString()) + " ORDER BY Clave_Motivo DESC,Importe ASC";
SqlCommand SQLcommd = new SqlCommand(sQuery, ConnSQL);
SqlDataReader SQLReader = SQLcommd.ExecuteReader();
DataTable SQLdt = new DataTable();
SQLdt.Columns.Add("ID");
SQLdt.Columns.Add("Cuenta");
SQLdt.Columns.Add("Cheque");
SQLdt.Columns.Add("Banco");
SQLdt.Columns.Add("Importe");
SQLdt.Columns.Add("Fecha Recepcion");
SQLdt.Columns.Add("Clave Motivo");
while (SQLReader.Read())
{
Level = SQLReader.GetValue(0).ToString() + "|";
Level += SQLReader.GetValue(1).ToString() + "|";
Level += SQLReader.GetValue(2).ToString() + "|";
Level += SQLReader.GetValue(3).ToString() + "|";
Level += SQLReader.GetValue(4).ToString() + "|";
Level += SQLReader.GetValue(5).ToString() + "|";
Level += SQLReader.GetValue(6).ToString();
SQLdt.Rows.Add(Level.Split('|'));
}
SQLReader.Close();
this.dgCompensar.DataSource = SQLdt;
this.dgCompensar.DataBind();
this.dgCompensar.GridLines = System.Web.UI.WebControls.GridLines.Both;
if (ConnSQL.State != ConnectionState.Closed)
ConnSQL.Close();
this.hdnTotalImg.Value = this.dgCompensar.Rows.Count.ToString();
this.Label1.Text = "Total: " + this.hdnTotalImg.Value;
}
catch (Exception ex)
{
gl.WriteLog("Clase: [" + CLASE_ACTUAL + "], Funcion:[fillGrid] Excepcion: " + ex.Message);
}
}
Código del DataGrid en el "blablabla.aspx"

Cita:
<%--Comienza Grid donde se muestran los registros procesados--%>
<asp:Panel ID="pnlGridProcesados" runat="server"

style="top:143px; position:absolute; left: 182px; height: 304px; width: 646px; ">
<asp:GridView ID="gridProcesados" runat="server" CellPadding="4" ForeColor="#000000" GridLines="None" style="overflow:scroll; height:304px;">
<FooterStyle BackColor="#D15050" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#FADADA" />
<SelectedRowStyle BackColor="#FFF3AB" Font-Bold="True" ForeColor="#000000" />
<PagerStyle BackColor="#FC2929" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#FF9D00" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
<EditRowStyle BackColor="#FF3030" />
</asp:GridView>
</asp:Panel>
<%--Finaliza Grid donde se muestran los registros procesados--%>
Saludos, espero te sirva dame uP a mi karma jajaja thx
  #9 (permalink)  
Antiguo 25/01/2012, 13:05
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema actualización datagrid despues de INSERT C#

Cita:
Iniciado por sebas_20_jv Ver Mensaje
Hola Amigo, La verdad no se cual sera la forma en como enlazas esos dataset al Grid,
Pero puedes intentar metiendo todo en una funcion por ejemplo :

public void CargarDatos()
{

// TODO: esta línea de código carga datos en la tabla 'bdDataSet.REPARACIONES' Puede moverla o quitarla según sea necesario.
this.rEPARACIONESTableAdapter.Fill( this.bdDataSet.REPARACIONES );
// TODO: esta línea de código carga datos en la tabla 'bdDataSet.PROTESISXCLIENTE' Puede moverla o quitarla según sea necesario.
this.pROTESISXCLIENTETableAdapter.Fill( this.bdDataSet.PROTESISXCLIENTE );
// TODO: esta línea de código carga datos en la tabla 'bdDataSet.CLIENTES' Puede moverla o quitarla según sea necesario.
this.cLIENTESTableAdapter.Fill( this.bdDataSet.CLIENTES );
}

Luego en el load pones :

private void Form1_Load( object sender, EventArgs e )
{
CargarDatos();
}

Y esa misma funcion la llamas cuando hagas el Insert...
Esta opcion no me funciona, le hago un debug y me entra en el CargarDatos despues del Insert, pero nada, el grid no se actualiza.

Cita:
Iniciado por totobycrg Ver Mensaje
Easy ;):

Código de la funcion que hace una consulta a SQL y luego llena el DataGrid


Código del DataGrid en el "blablabla.aspx"



Saludos, espero te sirva dame uP a mi karma jajaja thx
No es asp como estoy programando, estoy programando en C#.

Os dejo parte del codigo principal del programa a ver si podeis sacar algo en claro:

Código:
        private void cLIENTESBindingNavigatorSaveItem_Click( object sender, EventArgs e )
        {
            this.Validate();
            this.cLIENTESBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll( this.bdDataSet );

        }

        private void CargarDatos()
        {
            this.rEPARACIONESTableAdapter.Fill( this.bdDataSet.REPARACIONES );
            this.pROTESISXCLIENTETableAdapter.Fill( this.bdDataSet.PROTESISXCLIENTE );
            this.cLIENTESTableAdapter.Fill( this.bdDataSet.CLIENTES );
        }

        private void Form1_Load( object sender, EventArgs e )
        {
            CargarDatos();
        }

        private void btAddCliente_Click( object sender, EventArgs e )
        {
            AddCliente addCliente = new AddCliente();
            addCliente.Show();
        }

        public void addCliente( string dni, string nombre, string apellidos, string telefono,
                                string direccion, string num_cliente_noah )
        {
            try
            {
                string path = Application.StartupPath;
                string cadena = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + "\\bd.mdb;Persist Security Info=False";
                OleDbConnection conexion = new OleDbConnection( cadena );

                string sql = "INSERT INTO CLIENTES(DNI,NOMBRE,APELLIDOS,TELEFONO,DIRECCION,NUM_CLIENTE_NOAH,NUM_CLIENTE_INTERNO) VALUES (@DNI, @NOMBRE, @APELLIDOS, @TELEFONO, @DIRECCION, @NUM_CLIENTE_NOAH, @NUM_CLIENTE_INTERNO)";
                OleDbCommand orden = new OleDbCommand( sql, conexion );
                orden.Parameters.Add( new OleDbParameter( "@DNI", OleDbType.VarChar ) );
                orden.Parameters["@DNI"].Value = dni;
                orden.Parameters.Add( new OleDbParameter( "@NOMBRE", OleDbType.VarChar ) );
                orden.Parameters["@NOMBRE"].Value = nombre;
                orden.Parameters.Add( new OleDbParameter( "@APELLIDOS", OleDbType.VarChar ) );
                orden.Parameters["@APELLIDOS"].Value = apellidos;
                orden.Parameters.Add( new OleDbParameter( "@TELEFONO", OleDbType.VarChar ) );
                orden.Parameters["@TELEFONO"].Value = telefono;
                orden.Parameters.Add( new OleDbParameter( "@DIRECCION", OleDbType.VarChar ) );
                orden.Parameters["@DIRECCION"].Value = direccion;
                orden.Parameters.Add( new OleDbParameter( "@NUM_CLIENTE_NOAH", OleDbType.VarChar ) );
                orden.Parameters["@NUM_CLIENTE_NOAH"].Value = num_cliente_noah;
                orden.Parameters.Add( new OleDbParameter( "@NUM_CLIENTE_INTERNO", OleDbType.VarChar ) );
                orden.Parameters["@NUM_CLIENTE_INTERNO"].Value = num_cliente_noah + "/" + DateTime.Now.Year;

                orden.Connection.Open();
                orden.ExecuteNonQuery();
                orden.Connection.Close();

                // TO DO: Hacer que se actualice sin tener que reiniciar la puta pp
                CargarDatos();
                //Application.Restart();
            }
            catch( Exception ex )
            {
                MessageBox.Show( ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error );
            }
        }
  #10 (permalink)  
Antiguo 25/01/2012, 14:10
Avatar de totobycrg  
Fecha de Ingreso: enero-2012
Ubicación: México D.F.
Mensajes: 27
Antigüedad: 12 años, 3 meses
Puntos: 5
Respuesta: Problema actualización datagrid despues de INSERT C#

ummm lo que yo te mencioné también es C# .Net pero es un proyecto Web, por lo tanto el negocio esta detrás en C# y el front es Aspx, pero bueno era la idea xD
  #11 (permalink)  
Antiguo 25/01/2012, 14:34
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema actualización datagrid despues de INSERT C#

Cita:
Iniciado por totobycrg Ver Mensaje
ummm lo que yo te mencioné también es C# .Net pero es un proyecto Web, por lo tanto el negocio esta detrás en C# y el front es Aspx, pero bueno era la idea xD
Ajam, pero lo que yo entiendo es que tiene que haber una llamada a algun método que recargue los datagrids, es decir, que haga justo lo que se hace cuando se inicia la aplicación, pero por más que busco no encuentro nada...
  #12 (permalink)  
Antiguo 25/01/2012, 15:40
Avatar de othix  
Fecha de Ingreso: mayo-2011
Ubicación: Guatemala
Mensajes: 92
Antigüedad: 13 años
Puntos: 9
Respuesta: Problema actualización datagrid despues de INSERT C#

hace esto:

Código vb:
Ver original
  1. // TO DO: Hacer que se actualice sin tener que reiniciar la puta pp
  2. CargarDatos();
  3. //Application.Restart();
  4. //pone estalinea
  5. DataGrid.DataBind();
__________________
"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas."
  #13 (permalink)  
Antiguo 26/01/2012, 14:50
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema actualización datagrid despues de INSERT C#

Cita:
Iniciado por othix Ver Mensaje
hace esto:

Código vb:
Ver original
  1. // TO DO: Hacer que se actualice sin tener que reiniciar la puta pp
  2. CargarDatos();
  3. //Application.Restart();
  4. //pone estalinea
  5. DataGrid.DataBind();
Gracias por la respuesta pero la clase DataGrid no tiene ningun metodo llamado DataBind, entonces me da error de compilacion...
  #14 (permalink)  
Antiguo 27/01/2012, 03:46
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema actualización datagrid despues de INSERT C#

No entiendo como puede ser tan complicado este tema cuando es recargar un simple datagridview con los datos de una tabla...
  #15 (permalink)  
Antiguo 28/01/2012, 10:31
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema actualización datagrid despues de INSERT C#

Conseguido, era problema de que al form que añadia al cliente no le pasaba el "this", digamos la clase principal que lo llamaba, entonces al hacer el add lo hacia en otra instancia distinta.

Etiquetas: datagrid, insert, sql, tabla, aplicaciones
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 19:21.