Principales respuestas
datagridview asociado con un bindingsource y agregarle filas manualmente

Pregunta
-
Saludo gente tengo un pequeño problema es que tengo un datagridview asociado con un bindingsource para que se llene desde la base de dato pero quiero agregarle nuevos datos al datagridview para despues pasarlo a la base de dato pero cuando intento agregarle con el comando datagridview.rows.add me da error me gustaria saber si no hay un modo de agregarle los datos.
Respuestas
-
Hola @Bodoke1,
Imagino que el error que te aparece es el siguiente "InvalidOperationException" con el siguiente Texto:
"No se pueden agregar filas mediante programación a la colección de filas de DataGridView cuando el control está enlazado a datos."
Si es así y lo ves detenidamente te das cuenta que tu no puedes utilizar esta instrucción
this.dataGridView1.Rows.Add(new object[] { 1, "Hola" });
Puesto que como bien puedes ver no se puede agregar filas a un DataGridView mediante Rows.Add cuando este está enlazado a datos. Si tu lo tienes enlazado a un BindingSource y este a su vez a un DataSet que tiene un DataTable la forma de hacerlo sería a través del DataTable tal y como te muestro en el siguiente código.
this.dataSet1.DataTable1.AddDataTable1Row(10, "Hola");
Es sencillo, no puedes agregar datos mediante Rows.Add si el DataGridView está enlazado a Datos.
Intenta en tus preguntas pasar la mayor información posible, que de esta forma se te puede ayudar mucho mejor :)
Saludos,
phurtado
- Propuesto como respuesta Eduardo PorteschellerModerator miércoles, 8 de febrero de 2012 13:04
- Marcado como respuesta Bodoke1 miércoles, 8 de febrero de 2012 14:40
Todas las respuestas
-
hola
es que el registro no lo agregarias directo al datagridview, sino que lo harias al origen de datos
DataTable dt = BindingSource1.DataSource as DataTable;
DataRow row = dt.NewRow();
row["campo1"] = valor;
dt.Rows.Add(row);
BindingSource1.DataSource = dt;
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Propuesto como respuesta Eduardo PorteschellerModerator miércoles, 8 de febrero de 2012 13:04
-
-
Hola,
Te dice eso o esto "Referencia a objeto no establecida como instancia de un objeto.". Bueno pues yo creo que es esta última y es porque al pasar Leandro el código
DataTable dt = BindigSource1.DataSource as DataTable;
lo que se hace es convertir el la propiedad DataSource del objeto BindingSource1 a DataTable aplicando "as" , que ocurre que cuando se hace eso se debería de preguntar por if (dt!=null), yo creo que ese es el problema.
Sustituye el código que paso Leandro por este otro y el error se soluciona, pero que tipo de objeto es el que asignaste a DataSource ?
DataTable dt = BindingSource1.DataSource as DataTable; if (dt!=null) { DataRow row = dt.NewRow(); row["campo1"] = valor; dt.Rows.Add(row); BindingSource1.DataSource = dt; }
Seguro que el DataSource es un DataTable, es que me temo que es otra cosa y no lo has mostrado:)
Saludos,'
phurtado
- Propuesto como respuesta Eduardo PorteschellerModerator miércoles, 8 de febrero de 2012 13:04
-
mira lo k pasa es que tengo una datagridview a donde varios datos de un dataset que se carga atras ves de un bindingsource entonce quiero agregarle a ese datagridview datos nuevo para despues darle a botton guardar y se guarde lo nuevo que e agregado a datagridview pero mi problema es que cuando quiero agregarle a datagridview datos me da el error por el bindingsource y no se que puedo hacer
-
-
yo cargo el datagridview con un bindingsource que esta asociado con el dataset y kiero agregarle a datagridview linea con el comando add pero no me permite y eso es lo k kiero ver si se puede k a un datagridview que tiene asociado un bindingsource agregarle registro que no esta en esa base de dato para depues guardarla
-
Hola @Bodoke1,
Imagino que el error que te aparece es el siguiente "InvalidOperationException" con el siguiente Texto:
"No se pueden agregar filas mediante programación a la colección de filas de DataGridView cuando el control está enlazado a datos."
Si es así y lo ves detenidamente te das cuenta que tu no puedes utilizar esta instrucción
this.dataGridView1.Rows.Add(new object[] { 1, "Hola" });
Puesto que como bien puedes ver no se puede agregar filas a un DataGridView mediante Rows.Add cuando este está enlazado a datos. Si tu lo tienes enlazado a un BindingSource y este a su vez a un DataSet que tiene un DataTable la forma de hacerlo sería a través del DataTable tal y como te muestro en el siguiente código.
this.dataSet1.DataTable1.AddDataTable1Row(10, "Hola");
Es sencillo, no puedes agregar datos mediante Rows.Add si el DataGridView está enlazado a Datos.
Intenta en tus preguntas pasar la mayor información posible, que de esta forma se te puede ayudar mucho mejor :)
Saludos,
phurtado
- Propuesto como respuesta Eduardo PorteschellerModerator miércoles, 8 de febrero de 2012 13:04
- Marcado como respuesta Bodoke1 miércoles, 8 de febrero de 2012 14:40
-
-
Hola @Bodoke1,
Imagino que el error que te aparece es el siguiente "InvalidOperationException" con el siguiente Texto:
"No se pueden agregar filas mediante programación a la colección de filas de DataGridView cuando el control está enlazado a datos."
Si es así y lo ves detenidamente te das cuenta que tu no puedes utilizar esta instrucción
this.dataGridView1.Rows.Add(new object[] { 1, "Hola" });
Puesto que como bien puedes ver no se puede agregar filas a un DataGridView mediante Rows.Add cuando este está enlazado a datos. Si tu lo tienes enlazado a un BindingSource y este a su vez a un DataSet que tiene un DataTable la forma de hacerlo sería a través del DataTable tal y como te muestro en el siguiente código.
this.dataSet1.DataTable1.AddDataTable1Row(10, "Hola");
Es sencillo, no puedes agregar datos mediante Rows.Add si el DataGridView está enlazado a Datos.
Intenta en tus preguntas pasar la mayor información posible, que de esta forma se te puede ayudar mucho mejor :)
Saludos,
phurtado
Hola:
Me sirvió mucho de ayuda tu código, te doy las gracias por ello.
Pero tengo un pequeño problema y es el siguiente,el primer campo de mi BD es el primary key y es de tipo auto numérico, cuando agrego la información a la nueva fila creada en el datagrid, no tengo ningún problema excepto con el primer campo que como comentaba es la primary key y es autonumerico, pero en vez de continuar con el siguiente numero (imaginemos que tengo 1000 registros y quiero añadir una fila mas), 1001, se me queda en -1 y no se el motivo por el cual ocurre esto.
Otra cosa que desconozco es como actualizar la BD a partir del datagridview al que le he añadido X filas, me gustaría independientemente de actualizarlo al introducir datos de forma manual,poder editaar o borrar cualquier fila del datagrid y que se actualizasen dichos cambios en la BD.
Disculpar las molestias,pero estoy empezando con el tema de BD.
Muchísimas gracias por vuestra ayuda