Principales respuestas
guardar datos de datagridview en sql c#

Pregunta
-
Buena tarde.
Que tal, nuevamente solicitando de su ayuda y sus conocimientos, ahora resulta que no puedo guardar los datos que tengo en un DataGridView en una tabla en SQL, mi codigo es el siguiente:
protected void BtnGuardar_Click(object sender, EventArgs e) { using (SqlConnection conn = new SqlConnection("Data Source=DESKTOP-GBLB5KE\\SQL;Initial Catalog=Propuestas;Integrated Security=True;")) { conn.Open(); string query = "INSERT INTO Propuestas_Asimilados (NEmpleados, Nombre, FechaAlta, Sueldo, ISR, SueldoaPercibir, Total) VALUES (@NEmpleados, @Nombre, @FechaAlta, @Sueldo, @ISR, @Sueldo, @SueldoaPercibir, @Total)"; SqlCommand cmd = new SqlCommand(query, conn); try { foreach (GridViewRow row in GVListaGrupal.Rows) { cmd.Parameters.Clear(); cmd.Parameters.Add("@NEmpleados", SqlDbType.Float).Value = Convert.ToDouble(GVListaGrupal.row[1].Cells("NEmpleados").Value); cmd.Parameters.AddWithValue("@NEmpleados", Convert.ToDouble(row.Cells("Nombre").Value)); cmd.Parameters.AddWithValue("@Nombre", (DateTime)Convert.ToDateTime(row.Cells("FechaAlta").Value)); cmd.Parameters.AddWithValue("@FechaAlta", (DateTime)Convert.ToDateTime(row.Cells("Sueldo").Value)); cmd.Parameters.AddWithValue("@ISR", (float)Convert.ToDouble(row.Cells("ISR").Value)); cmd.Parameters.AddWithValue("@Sueldo", (float)Convert.ToDouble(row.Cells("SueldoaPercibir").Value)); cmd.Parameters.AddWithValue("@SueldoaPercibir", (float)Convert.ToDouble(row.Cells("Total").Value)); cmd.ExecuteNonQuery(); } } catch (Exception ex) { throw ex; } finally { conn.Close(); } } }
Las dos primeras lineas se repite el parámetro NEmpleados pero solo lo puse para modificar algo el código pero en la primera la primera linea me marca el error en la palabra row y entodas las demás en la palabra Cells no se que es lo que me hace falta.
De antemano muchas gracias.
Respuestas
-
hola
>>realice el debugg con el breakpoint pero no muestra ningún error
si ejecutas paso a paso, puedes validar que ingresa en el
foreach (GridViewRow row in GVListaGrupal.Rows)
quizas no esta iterando las rows del grid
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta Joyce_ACModerator martes, 13 de junio de 2017 14:41
Todas las respuestas
-
Hola,
Estaba visualizando tu codigo, y hay formas de optimizarlo..
string query = "INSERT INTO Propuestas_Asimilados (NEmpleados, Nombre, FechaAlta, Sueldo, ISR, SueldoaPercibir, Total) VALUES (txtEmpleados.text, Nombre.text, FechaAlta.text, Sueldo.text, ISR.text, Sueldo.text, SueldoaPercibir.text, Total.text)";
Obten los datos directamente de tus cajas de texto...
-
-
hola
Pero el DataGridView de winform, o es el GridView de asp.net ?
En asp.net no puees acceder a la celda por el nombre
cmd.Parameters.AddWithValue("@NEmpleados", Convert.ToDouble(row.Cells[1].Text));
es un array por eso [] y ademas se usa el .Text porque seguro sera un BoundField
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina -
Buen día.
Para llenar el gridview en asp.net utilizo el siguiente codigo.
public DataTable filldata1() { DataTable dt2 = new DataTable(); dt2.Columns.Add("Numero de Empleados", typeof(string)); dt2.Columns.Add("Nombre", typeof(string)); dt2.Columns.Add("Fecha de Alta", typeof(string)); dt2.Columns.Add("Sueldo", typeof(string)); dt2.Columns.Add("ISR", typeof(string)); dt2.Columns.Add("Sueldo A Percibir", typeof(string)); dt2.Columns.Add("Total", typeof(string)); return dt2; }
protected void BtnAddRegistro_Click(object sender, EventArgs e) { if (Session["dt2"] == null) { DataTable dt2 = filldata1(); DataRow Row2; Row2 = dt2.NewRow(); Row2["Numero de Empleados"] = this.TextBox23.Text; Row2["Nombre"] = this.TextBox3.Text; Row2["Fecha de Alta"] = this.TextBox4.Text; Row2["Sueldo"] = this.TextBox6.Text; Row2["ISR"] = this.TextBox19.Text; Row2["Sueldo A Percibir"] = this.TextBox1.Text; Row2["Total"] = this.TextBox21.Text; dt2.Rows.Add(Row2); GVListaGrupal.DataSource = dt2; GVListaGrupal.DataBind(); Session["dt2"] = dt2; } else { DataTable dt2 = (Session["dt2"]) as DataTable; DataRow Row2; Row2 = dt2.NewRow(); Row2["Numero de Empleados"] = this.TextBox23.Text; Row2["Nombre"] = this.TextBox3.Text; Row2["Fecha de Alta"] = this.TextBox4.Text; Row2["Sueldo"] = this.TextBox6.Text; Row2["ISR"] = this.TextBox19.Text; Row2["Sueldo A Percibir"] = this.TextBox1.Text; Row2["Total"] = this.TextBox21.Text; dt2.Rows.Add(Row2); GVListaGrupal.DataSource = dt2; GVListaGrupal.DataBind(); Session["dt2"] = dt2; } }
y ya modifique el codigo de insetar y me quedo asi.
protected void BtnGuardar_Click(object sender, EventArgs e) { using (SqlConnection conn = new SqlConnection("Data Source=DESKTOP-GBLB5KE\\SQL;Initial Catalog=Propuestas;Integrated Security=True;")) { conn.Open(); string query = "INSERT INTO Propuestas_Asimilados (NEmpleados, Nombre, FechaAlta, Sueldo, ISR, SueldoaPercibir, Total) VALUES (@NEmpleados, @Nombre, @FechaAlta, @Sueldo, @ISR, @Sueldo, @SueldoaPercibir, @Total)"; SqlCommand cmd = new SqlCommand(query, conn); try { foreach (GridViewRow row in GVListaGrupal.Rows) { cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@NEmpleados", Convert.ToDouble(row.Cells[1].Text)); cmd.Parameters.AddWithValue("@Nombre", (DateTime)Convert.ToDateTime(row.Cells[2].Text)); cmd.Parameters.AddWithValue("@FechaAlta", (DateTime)Convert.ToDateTime(row.Cells[3].Text)); cmd.Parameters.AddWithValue("@ISR", (float)Convert.ToDouble(row.Cells[4].Text)); cmd.Parameters.AddWithValue("@Sueldo", (float)Convert.ToDouble(row.Cells[5].Text)); cmd.Parameters.AddWithValue("@SueldoaPercibir", (float)Convert.ToDouble(row.Cells[6].Text)); cmd.ExecuteNonQuery(); } } catch (Exception ex) { throw ex; } finally { conn.Close(); } } }
pero al presionar el botón no pasa nada como si no tuviera código.
-
Hola Ekc21
Primero, estamos seguros que tu evento está asociado a ese botón?
Segundo, realiza un debug (un paso a paso, coloca un punto de interrupción), de esa forma identificarás más rápido si algo esta ocurriendo y podamos apoyarte.
Tercero, coloca el siguiente código después de tu conexión, reemplaza estas líneas, veo un punto y coma después de tu Integrated Securirty=True. fíjate en el paso a paso si abre bien la conexión.
using (SqlConnection conn = new SqlConnection("Data Source=DESKTOP-GBLB5KE\\SQL;Initial Catalog=Propuestas;Integrated Security=True")) { if (conn.State != ConnectionState.Open) { conn.Open(); }
Nos comentas
Saludos
Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.
-
Que tal. ya he seguido los consejos que me dijiste ya revise el evento del botón y si es el correcto ya aplique el codigo que me pasaste después de la cadena de conexión y realice el debugg con el breakpoint pero no muestra ningún error y tampoco inserta nada.
muchas gracias por sus comentarios.
-
hola
>>realice el debugg con el breakpoint pero no muestra ningún error
si ejecutas paso a paso, puedes validar que ingresa en el
foreach (GridViewRow row in GVListaGrupal.Rows)
quizas no esta iterando las rows del grid
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta Joyce_ACModerator martes, 13 de junio de 2017 14:41
-