Foros del Web » Programación para mayores de 30 ;) » .NET »

Actualizar base de datos desde Datagrid...

Estas en el tema de Actualizar base de datos desde Datagrid... en el foro de .NET en Foros del Web. Estoy tratando de utilizar la funcionalidad de un datagrid en cuanto al uso de columnas de edit, update y cancel. He podido programar los eventos ...
  #1 (permalink)  
Antiguo 24/11/2004, 06:15
 
Fecha de Ingreso: diciembre-2003
Ubicación: WWW
Mensajes: 98
Antigüedad: 20 años, 4 meses
Puntos: 0
Actualizar base de datos desde Datagrid...

Estoy tratando de utilizar la funcionalidad de un datagrid en cuanto al uso de columnas de edit, update y cancel. He podido programar los eventos edit y cancel. Sin embargo en el evento update trato de tomar los valores que se editan en los texboxes para luego hacer el update a la tabla. Pero no toma los valores que que introduzco. Es decir, se queda con el mismo valor que tenía el grid antes de editarlo. Este es mi código:
Código:
   Private Sub grid_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles grid.UpdateCommand

        Dim metaTxt As System.Web.UI.WebControls.TextBox = New System.Web.UI.WebControls.TextBox
        metaTxt = e.Item.Cells(2).Controls(0)
        Dim CodigoTxt As System.Web.UI.WebControls.TextBox = e.Item.Cells(0).Controls(0)
        Dim codigo As String = Val(CodigoTxt.Text)
        Dim meta As String = metaTxt.Text
        Dim tmp As String = e.Item.Cells(2).Text
        '--------------------------------------------------------------
        Dim BD As Mdg.CBaseDatos = New CBaseDatos
        Dim sSql As String
        BD.Conectar()
        BD.Drd = BD.Query("Begin Transaction") : BD.Drd.Close()

        sSql = "update segd_objetivos_x_posicion set Factor_Proyectado = " & meta & _
                " where Numero_Colectivo_posicion = " & codigo & ""

        BD.Drd = BD.Query(sSql)
        BD.Drd.Close()
        BD.Drd = BD.Query("Commit") : BD.Drd.Close()
        BD.Desconectar()
        grid.EditItemIndex = -1
        fillgrid()
    End Sub
Se supone que la variable Meta debería tomar el valor nuevo que yo introduzca en la columna / fila específica del grid. Cuando lo corrí paso a paso me dí cuenta de que no toma el nuevo valor, por tanto el udate a la tabla se realiza con los mismos valores.

¿Qué estaré haciendo mal?
__________________
"No nos atrevemos a muchas cosas porque son difíciles, pero son difíciles porque no nos atrevemos a hacerlas" :si:

Séneca
  #2 (permalink)  
Antiguo 24/11/2004, 07:41
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 12
Antigüedad: 20 años, 4 meses
Puntos: 0
siannah
hay varias formas de recoger datos de los grid la variable que defines como "Dim tmp As String = e.Item.Cells(2).Text" debiera entregarte el valor que necesitas. De todas maneras acá tienes otra opcion que podria servir.

Código HTML:
        Dim texto As String = E.Item.Cells(2).Text()
        Dim Cols As String() = {"Textbox1", "Textbox2", "Textbox3", "Textbox4", "Textbox5"}
        Dim Cols2 As String()
        Dim I As Integer
        For I = 0 To 4
            Dim MiTextBox As TextBox
            MiTextBox = E.Item.FindControl(Cols(I))
            Dim ColValue As String = MiTextBox.Text
            'myDataRow(Cols2(I))= ColValue
            Cols2(I) = ColValue
        Next
nos vemos
Kedron
  #3 (permalink)  
Antiguo 24/11/2004, 07:54
 
Fecha de Ingreso: diciembre-2003
Ubicación: WWW
Mensajes: 98
Antigüedad: 20 años, 4 meses
Puntos: 0
Gracias por responder Kedron, lo intentaré y te contaré acerca de los resultados...
__________________
"No nos atrevemos a muchas cosas porque son difíciles, pero son difíciles porque no nos atrevemos a hacerlas" :si:

Séneca
  #4 (permalink)  
Antiguo 24/11/2004, 09:01
 
Fecha de Ingreso: diciembre-2003
Ubicación: WWW
Mensajes: 98
Antigüedad: 20 años, 4 meses
Puntos: 0
He probado lo que me dijiste y aún así no funciona. La variable no asume el cambio
Dim texto As String = E.Item.Cells(2).Text() se queda con el valor que traigo de la tabla.

Lo que haré es que probaré en otra pc a ver si es problema de configuración porque todo lo que he indagado me dice que esa es la forma que se realiza para capturar el nuevo valor digitado en el datagrid.

Ya informaré acerca de los resultados...
__________________
"No nos atrevemos a muchas cosas porque son difíciles, pero son difíciles porque no nos atrevemos a hacerlas" :si:

Séneca
  #5 (permalink)  
Antiguo 24/11/2004, 09:16
 
Fecha de Ingreso: diciembre-2003
Ubicación: WWW
Mensajes: 98
Antigüedad: 20 años, 4 meses
Puntos: 0
Ya encontré respuesta a mi problema. Lo que hice fue que al momento de cargar la página pregunto:
Código:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Put user code to initialize the page here
        If Not IsPostBack Then
            fillgrid()
        End If
End Sub
La razón: cada vez que ejecutaba el evento update del grid, se hacía postback al servidor y se llenaba el grid nuevamente. Ahora con esta instrucción sólo se llena la primera vez y cuando hago postback me asume los valores actuales que inserto.

En una ocasión me había pasado lo mismo con un DropDownList, esta vez no me había percatado de eso...

¡Gracias por todo!
__________________
"No nos atrevemos a muchas cosas porque son difíciles, pero son difíciles porque no nos atrevemos a hacerlas" :si:

Séneca

Última edición por siannah; 24/11/2004 a las 09:28
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:40.