Estimados lectores, ha sido una experiencia agradable el
hacer este blog y tener algunos lectores que comparten el gusto por la
programación; actualmente estoy empezando otro proyecto, muy personal, con tecnología web que espero compartir con toda la comunidad de
programadores y necesito recursos porque es algo muy personal y mi situación
financiera no es muy buena.
www.artprogramnet.wordpress.com
1.-El usuario modifica una celda del datagridview y de inmediato pulsa el botón de grabar, no graba la fila en que está posicionado.
2.-De un conjunto de filas modificadas, la última no se graba.
Bueno para solucionar este detalle, en el botón de grabar, se recorre la tabla subyacente que en este caso se llama dtabalumnos y finalizo todos los cambios pendientes de cada fila.
Luego finalizó todos los cambios pendientes del datagridview, que en este caso se llama dgalumnos
Dim filaalumno As DataRow
For Each filaalumno In dtabalumnos.Rows
filaalumno.EndEdit()
Next filaalumno
Dgalumnos.EndEdit()
Nota: se debe finalizar la edicion de la fila con endedit y despues el datagridview, de otra manera no funciona.
Si han encontrado otra solución mas sencilla, no duden en compartirla
Muchas gracias por la solución, estoy empezando con .NET y estoy vuelto loco, te he puesto en mis favoritos.
ResponderEliminarPaco.
Saludos Paco, que bueno que te haya servido la solución!.
ResponderEliminarSuerte con el Visual Net y tus futuros proyectos.
Saludos,
ResponderEliminarEstoy haciendo lo siguiente en el botón guardar, y aun así no funciona. Es posible que tenga que hacer algo más antes??
For Each dr As DataRow In varDT.Rows
dr.EndEdit()
Next dr
DGV_Perfiles.EndEdit()
Gracias por por tu ayuda...
Me faltaba terminar la edición en el BindingSource:
ResponderEliminarBS_Perfiles.EndEdit()
Y listo.
Andrea, gracias por tu aportación. Yo en lo particular no ocupo BindingSource, pero que bueno que ya te haya orientado el artículo y a la vez nos hayas aportado la solución cuando se ocupa BS.
ResponderEliminarSaludos
muy bueno, me parece increíble un error así, pero la solución es válida. Gracias
ResponderEliminarGracias a ti anonimo por comentar. Pues si tienes razón,a veces pienso que en lugar de dedicar tanto tiempo a lanzar nuevas versiones y herramientas sofisticadas, Microsoft o cualquier otra compañia, deberian concentrarse en facilitar y perfeccionar cosas tan basicas como esta. Otros ejemplos:la concurrencia cuando varias personas entran al mismo registro e intentan grabar con la misma clave(la base de datos no esta enterada de los cambios, puesto que estan desconectados), combos --tambien tienen sus detalles-- y muchos otros problemas que se dan en la vida real de los desarrolladores, en fin. Saludos !
ResponderEliminarGracias por colaborar.
ResponderEliminarCreo que no hace falta recorrer todas las filas del datatable, solo hacer endedit en la fila en edicion y salvar la tabla.
dgv.endedit
dataset.tables("tabla").rows(dgv.currentcell.rowindex).endedit
dataadapter.update(dataset,"tabla")
Si les sirve, un saludo.
eres un genio anónimo, me sirvió de mucho gracias
EliminarGracias por comentar y darnos una solución.
ResponderEliminarHabria que probarla y ver si funciona, aunque a primera vista deberia ser al reves, o sea, primero darle endedit al renglón y después al grid, tambien observo que es solo una celda y deberia ser todo el renglón, porque en este caso estas grabando desde varios textbox hacia diferentes celdas del renglon de tu grid.
Bueno si alguien tiene oportunidad de probarlo y funciona, ojala que nos avise.
saludos
Esto funciona si lo pones en un botón
ResponderEliminarSqlDataAdapter.Update(dataset, "mitabla")
dataset.AcceptChanges()
Pero no funciona si lo pones en un evento del datagrid
Por ejemplo en el evento CellValueChanged no me sirve este codigo. No guarda:
If e.ColumnIndex = 0 AndAlso e.RowIndex <> -1 Then
Else
SqlDataAdapter.Update(dataset, "mitabla")
dataset.AcceptChanges()
End If
Saludos
Hola :
ResponderEliminarEsto ultimo no me funciona, pero si me funciona :
Creo que no hace falta recorrer todas las filas del datatable, solo hacer endedit en la fila en edicion y salvar la tabla.
dgv.endedit
dataset.tables("tabla").rows(dgv.currentcell.rowindex).endedit
dataadapter.update(dataset,"tabla")
Muchas Gracias a los que colaboran.
Si es muy posible que no haga falta reccorrer todas las filas, pero habra que probar y asegurnos de que asi sea.
EliminarSaludos y gracias por compartir y comentar
Lo solucioné de esta manera:
ResponderEliminardataGridView1.EndEdit(); _tresultado.Rows[dataGridView1.CurrentRow.Index].EndEdit();
Gracias Ricardo por la solución, aunque irse directamente al datagridview puede ser que no funcione en todos los casos, ya que la tabla subyacente puede tener otros valores, sobre todo cuando haz hecho varias moidficaciones y estas no se han grabado sino hasta el final las vas a confirmar, pero habra que probar, suerte con tus poyectos, Saludos!
Eliminar