none
Como actualizar Datatable desde un GridView? RRS feed

  • 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!
    lunes, 19 de diciembre de 2011 3:57

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
    lunes, 19 de diciembre de 2011 4:34

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
    lunes, 19 de diciembre de 2011 4:34
  • 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!
    lunes, 19 de diciembre de 2011 16:08