Foros del Web » Programando para Internet » ASPX (.net) »

No me actualiza un campo del gridview

Estas en el tema de No me actualiza un campo del gridview en el foro de ASPX (.net) en Foros del Web. Hola a todos... Tengo un formulario, que tiene un gridview con la opcion update activadar, cada columna del gridview la converti en TemplateField para modificar ...
  #1 (permalink)  
Antiguo 04/11/2009, 22:59
 
Fecha de Ingreso: noviembre-2003
Mensajes: 209
Antigüedad: 20 años, 5 meses
Puntos: 0
No me actualiza un campo del gridview

Hola a todos...

Tengo un formulario, que tiene un gridview con la opcion update activadar, cada columna del gridview la converti en TemplateField para modificar la edicion a mi gusto.

pero de todos lo campos que tengo para actualizar, hay uno que no me actualiza, ya le busque y revise el codigo muchas veces y segun yo esta bien; es mas... se me hace logico todo lo que hice para la actualizacion de ese campo.

El campo a actualizar se llama "Cuenta" y los valores que ahi se guardan dependen de otro campo que se llama "CategNom" que es un dropdownlist cuando entra a modo de edicion, depende de lo que seleccione en "CategNom" es lo que se gurdara en el campo "Cuenta".

Les muestro la parte del codigo donde se hace la actualizacion en el gridview, parte en negrita es la que hace referencia a el campo ha actualizar y del campo del que depende:

Código:
Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GridView1.RowUpdating
        Dim ddl_tipo As DropDownList
        Dim id As Label
        Dim tb_fechagasto As TextBox
        Dim ddl_categoria As DropDownList
        Dim tb_montorg As TextBox
        Dim ddl_moneda As DropDownList
        Dim tb_tipocambio As TextBox
        Dim ddl_pais As DropDownList
        Dim ddl_recibofiscal As DropDownList
        Dim tb_iva As TextBox
        Dim tb_comentariosu As TextBox

        id = DirectCast((Me.GridView1.Rows(e.RowIndex).Cells(1).FindControl("lb_id")), Label)
        ddl_tipo = DirectCast((Me.GridView1.Rows(e.RowIndex).Cells(1).FindControl("ddl_tipo")), DropDownList)
        tb_fechagasto = DirectCast((Me.GridView1.Rows(e.RowIndex).Cells(1).FindControl("tb_fechagasto")), TextBox)
        ddl_categoria = DirectCast((Me.GridView1.Rows(e.RowIndex).Cells(1).FindControl("ddl_categoria")), DropDownList)


**** Este es una operacion ejecuto un procedimiento almacenado, le paso el valor de la variable "ddl_catergoria" para sacar de la base de datos parte de del valor que debe de ir en "Cuenta" ****

        Dim depto As Integer
        Dim planta As Integer
        Dim prefijo As String
        depto = Me.lb_centrocostos.Text
        planta = Left(depto, 2)
        Select Case planta
            Case 65
                prefijo = "5S"
            Case 66
                prefijo = "5S"
            Case 67
                prefijo = "5S"
            Case 68
                prefijo = "U2"
        End Select
        Using cnn As New SqlConnection(Me.SqlDataSource1.ConnectionString)
            Dim cmd As New SqlCommand()
            cmd.CommandText = "selecciona_cuenta"
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Connection = cnn
            cmd.Parameters.AddWithValue("@descripcion", ddl_categoria.SelectedValue)
            cnn.Open()
            Dim tabla As New DataTable
            Dim da As New SqlDataAdapter(cmd)
            da.Fill(tabla)

            Dim cta_izq As String
            Dim cta_der As String
            Dim cuenta As String

            cuenta = tabla.Rows(0)("cuenta").ToString
            cta_izq = tabla.Rows(0)("cuentaizq").ToString
            cta_der = tabla.Rows(0)("cuentader").ToString

            If cuenta <> "" Then
                Me.lb_cuenta.Text = cuenta
            Else
                Me.lb_cuenta.Text = prefijo & cta_izq & depto & cta_der
            End If
        End Using


        tb_montorg = DirectCast((Me.GridView1.Rows(e.RowIndex).Cells(1).FindControl("tb_montorg")), TextBox)
        ddl_moneda = DirectCast((Me.GridView1.Rows(e.RowIndex).Cells(1).FindControl("ddl_moneda")), DropDownList)
        tb_tipocambio = DirectCast((Me.GridView1.Rows(e.RowIndex).Cells(1).FindControl("tb_tipocambio")), TextBox)
        ddl_pais = DirectCast((Me.GridView1.Rows(e.RowIndex).Cells(1).FindControl("ddl_pais")), DropDownList)
        ddl_recibofiscal = DirectCast((Me.GridView1.Rows(e.RowIndex).Cells(1).FindControl("ddl_recibofiscal")), DropDownList)
        tb_iva = DirectCast((Me.GridView1.Rows(e.RowIndex).Cells(1).FindControl("tb_iva")), TextBox)
        tb_comentariosu = DirectCast((Me.GridView1.Rows(e.RowIndex).Cells(1).FindControl("tb_comentariosu")), TextBox)


        Me.lb_id.Text = id.Text
        Me.lb_tipo.Text = ddl_tipo.SelectedValue
        Me.lb_fechagasto.Text = tb_fechagasto.Text
        Me.lb_categoria.Text = ddl_categoria.SelectedValue
        Me.lb_montorg.Text = tb_montorg.Text
        Me.lb_moneda.Text = ddl_moneda.SelectedValue
        Me.lb_tipocambio.Text = tb_tipocambio.Text
        Me.lb_pais.Text = ddl_pais.SelectedValue
        Me.lb_recibofiscal.Text = ddl_recibofiscal.SelectedValue
        Me.lb_iva.Text = tb_iva.Text
        Me.lb_comentariosu.Text = tb_comentariosu.Text


        Using cnn As New SqlConnection(Me.SqlDataSource1.ConnectionString)
            Dim cmd As New SqlCommand()
            cmd.CommandText = "actualizar_datos"
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Connection = cnn
            cnn.Open()
            cmd.Parameters.AddWithValue("@id", Me.lb_id.Text)
            cmd.Parameters.AddWithValue("@modo_pago", Me.lb_tipo.Text)
            cmd.Parameters.AddWithValue("@fecha_gasto", Me.lb_fechagasto.Text)
            cmd.Parameters.AddWithValue("@categoria", Me.lb_categoria.Text)


****Has aqui, todo bien, el valor que tiene "lb_cuenta.text" es el correcto que quiero almacenar *****

            cmd.Parameters.AddWithValue("@cta", Me.lb_cuenta.Text)



            cmd.Parameters.AddWithValue("@monto", Me.lb_montorg.Text)
            cmd.Parameters.AddWithValue("@mnda", Me.lb_moneda.Text)
            cmd.Parameters.AddWithValue("@tipo_cambio", Me.lb_tipocambio.Text)
            cmd.Parameters.AddWithValue("@pais", Me.lb_pais.Text)
            cmd.Parameters.AddWithValue("@recibo", Me.lb_recibofiscal.Text)
            cmd.Parameters.AddWithValue("@iva", Me.lb_iva.Text)
            cmd.Parameters.AddWithValue("@comentarios", Me.lb_comentariosu.Text)
            cmd.ExecuteNonQuery()
            Me.GridView1.DataBind()
        End Using
    End Sub
Este es mi procedimiento almacenado:

Código:
ALTER PROCEDURE dbo.actualizar_datos
	@id int,
	@modo_pago nvarchar(18),
	@fecha_gasto datetime,
	@categoria nvarchar(30),
	@cta nvarchar(50),
	@monto money,
	@mnda nvarchar(5),
	@tipo_cambio money,
	@pais nvarchar(5),
	@recibo nvarchar(15),
	@iva money,
	@comentarios nvarchar(max)	          
	
AS
	UPDATE    Gastos
	SET              Tipo = @modo_pago, FechaGasto = @fecha_gasto, CategNom = @categoria, Cuenta = @cta, MontoOrg = @monto, Moneda = @mnda, 
	                      TipoCambio = @tipo_cambio, Pais = @pais, ReciboFiscal = @recibo, Iva = @iva, ComentariosU = @comentarios
	WHERE     (Id = @id)
	RETURN
Ya le busque y pense donde puede estar el error, pero no me funciona, ojala y me puedan ayudar.

Muchas gracias
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 04:17.