
04/11/2009, 22:59
|
| | Fecha de Ingreso: noviembre-2003
Mensajes: 209
Antigüedad: 21 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 |