Principales respuestas
Como actualizar Datatable desde un GridView?

Pregunta
-
Hola. Me explico tengo dos GridViews Utilizandolos como MAESTRO-DETALLE.
El GridView MAESTRO SE LLENA A Traves de un SQLDATASOURCE.
El segundo (Mi Gridview Detalle) se llena a traves de un datatable con los Items que seleccione ejemplo:
Pero No logro ni se como Actualizar el Campo Precio al Datatable y asi hacer con los demas ITEMS...En mi datatable uso sesiones (para no perder las items seleccionados.) Espero puedan ayudarme, Saludos.
Pd: Trabajo en ASP.NET (VB).
-Asp. Te Dominare!
Respuestas
-
hola
deberias en el evento RowUpdating del segundo gridview tomar el id o codigo de la entidad que se estaba editando y actualizar en el datatable buscando justamente por esa informacion
imagino en el gridview defines un DataKeyNames que tomas de un campo del datatable, entonces podrias hacer
Private Sub GridView2_RoUpdating(..){ Dim id As Integer= Convert.ToInt32(GridView2.DataKeys(e.RowIndex).Value); Dim txtprecio As TextBox= DirectCast(GridView2.Rows(e.RowIndex).FindControl("txtprecio"), TextBox) Dim dt As DataTable = DirectCast(Session("datos"), DataTable) Dim rows() As DataRow = dt.Select(String.Format("campoid = {0}", id)) If rows.Count = 0 Then Return End If Dim row As DataRow = rows(0) row(precio) = Convert.ToDouble(txtprecio.Text) End Sub
por supuesto esto es solo la idea, no es para que copies y pegues analizalo y adapatalo a tu caso
como veras hay un proceso de busqueda por la jey de la entidad de cual es el registro en el datatable que debes impactar con el cambio
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Nork613_ lunes, 19 de diciembre de 2011 16:08
Todas las respuestas
-
hola
deberias en el evento RowUpdating del segundo gridview tomar el id o codigo de la entidad que se estaba editando y actualizar en el datatable buscando justamente por esa informacion
imagino en el gridview defines un DataKeyNames que tomas de un campo del datatable, entonces podrias hacer
Private Sub GridView2_RoUpdating(..){ Dim id As Integer= Convert.ToInt32(GridView2.DataKeys(e.RowIndex).Value); Dim txtprecio As TextBox= DirectCast(GridView2.Rows(e.RowIndex).FindControl("txtprecio"), TextBox) Dim dt As DataTable = DirectCast(Session("datos"), DataTable) Dim rows() As DataRow = dt.Select(String.Format("campoid = {0}", id)) If rows.Count = 0 Then Return End If Dim row As DataRow = rows(0) row(precio) = Convert.ToDouble(txtprecio.Text) End Sub
por supuesto esto es solo la idea, no es para que copies y pegues analizalo y adapatalo a tu caso
como veras hay un proceso de busqueda por la jey de la entidad de cual es el registro en el datatable que debes impactar con el cambio
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Nork613_ lunes, 19 de diciembre de 2011 16:08
-
Muchas Gracias Leandro.!
Creedme que todo lo que os explicasi me ha quedado muy claro. Muchas Gracias.
Lo resolvi de la Siguiente Manera:
Dim id As Integer = Convert.ToInt32(GridView1.DataKeys(e.RowIndex).Value)
Dim txtprecio As TextBox = TryCast(GridView1.Rows(e.RowIndex).Cells(2).Controls(0), TextBox)
Dim Price As String = txtprecio.Text
Dim dt As DataTable = TryCast(Session("Tabla"), DataTable)
Dim rows() As DataRow = dt.Select(String.Format("IdCobertura = {0}", id))
Dim row As DataRow = rows(0)
row("precio") = Convert.ToDouble(Price)
GridView1.EditIndex = -1
FillData()
SumarDetalle()Muchas Gracias.
-Asp. Te Dominare!