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

Problema al querer actualizar una fila del datagrid

Estas en el tema de Problema al querer actualizar una fila del datagrid en el foro de .NET en Foros del Web. Hola necesito urgente ayuda sobre este tema que ya me ha sacado de las casillas. Tengo una grilla con un boton de actualizar, pero el ...
  #1 (permalink)  
Antiguo 23/10/2003, 08:03
 
Fecha de Ingreso: octubre-2003
Mensajes: 2
Antigüedad: 20 años, 6 meses
Puntos: 0
Problema al querer actualizar una fila del datagrid

Hola necesito urgente ayuda sobre este tema que ya me ha sacado de las casillas.

Tengo una grilla con un boton de actualizar, pero el problema esta de cuando intento recuperar los datos modificados de la fila de la grilla me sigue recuperando los datos viejos.

Adjunto el codigo asociado haber si alguien le puede encontrar una explicacion.

Desde ya les agradezco mucho.




Private Sub dgUsuarios_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles dgUsuarios.EditCommand
'Obtiene el indice de la fila de la grilla a actualizar
dgUsuarios.EditItemIndex = e.Item.ItemIndex
dgUsuarios.DataBind()
End Sub

Private Sub dgUsuarios_CancelCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles dgUsuarios.CancelCommand
'Finaliza edicion de la grilla
dgUsuarios.EditItemIndex = -1
dgUsuarios.DataBind()
End Sub

Private Sub dgUsuarios_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles dgUsuarios.UpdateCommand
'Realiza la actualizacion de los datos editados en la base de datos

Dim strusrkey As String


'Defino un datarow para almacenar la fila modificada de la grilla
Dim drusuarios As dsUsuarios.UsuariosRow
Dim stragt, strcod, strtpo, strnom, strape, strtel1, strint1, strtel2, strint2, strmail, strfax As String

'Obtiene el indice de la fila editada
strusrkey = dgUsuarios.DataKeys.Item(e.Item.ItemIndex).ToStrin g


'Obtiene las celdas con los valores modificados. Cada celda tiene una coleccion
'controles. en este caso solo un control que es un textbox, que contiene
'en la celda cero el "Actualizar" y "Cancelar"
strtpo = CType(e.Item.Cells(3).Controls(0), TextBox).Text
strnom = CType(e.Item.Cells(4).Controls(0), TextBox).Text
strape = CType(e.Item.Cells(5).Controls(0), TextBox).Text
strtel1 = CType(e.Item.Cells(6).Controls(0), TextBox).Text
strint1 = CType(e.Item.Cells(7).Controls(0), TextBox).Text
strtel2 = CType(e.Item.Cells(8).Controls(0), TextBox).Text
strint2 = CType(e.Item.Cells(9).Controls(0), TextBox).Text
strmail = CType(e.Item.Cells(10).Controls(0), TextBox).Text
strfax = CType(e.Item.Cells(11).Controls(0), TextBox).Text

'Obtiene la fila modificada de la grilla
drusuarios = DsUsuarios1.Usuarios.FindByAgtCodUsrCod(AgtCod, strusrkey)

'Actualiza los campos de la fila con los valores obtenidos de la celda
drusuarios.UsrTpo = strtpo
drusuarios.UsrNom = strnom
drusuarios.UrApe = strape
drusuarios.UsrTel1 = strtel1
drusuarios.UsrTelInt1 = strint1
drusuarios.UsrTel2 = strtel2
drusuarios.UsrTelInt2 = strint2
drusuarios.UsrMail = strmail
drusuarios.UsrFax = strfax

'Finaliza la edicion de la fila
drusuarios.EndEdit()

'Actualiza el dataset
daUsuarios.Update(DsUsuarios1)

'Acepta los cambios para actualizar la base de datos
DsUsuarios1.AcceptChanges()

'Sale del modo de edicion
dgUsuarios.EditItemIndex = -1

'Hace el refresh a la grilla
dgUsuarios.DataBind()


End Sub
  #2 (permalink)  
Antiguo 23/10/2003, 13:41
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Hola.. creo que para empezar en tu código de:

Cita:
Private Sub dgUsuarios_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles dgUsuarios.EditCommand
'Obtiene el indice de la fila de la grilla a actualizar
dgUsuarios.EditItemIndex = e.Item.ItemIndex
dgUsuarios.DataBind()
End Sub
Lo que estas haciendo es efectivamente cargar el índice pero recuerda que como se hace un postback el grid pierde ese índice y lo que debes hacer es volverlo a llenar tu grid

ejemplo:

Cita:
Private Sub dgUsuarios_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles dgUsuarios.EditCommand
'Obtiene el indice de la fila de la grilla a actualizar
dgUsuarios.EditItemIndex = e.Item.ItemIndex
LlenarGrid()
End Sub

Sub LlenarGrid()
Dim cnn As New SqlConnection("tu_stringconnection")
Dim da As New SqlDataAdapter("tu_consulta", cnn)
Dim ds As New DataSet()
da.Fill(ds)
DataGrid1.DataSource = ds
DataGrid1.DataBind()
End Sub

y lo mismo para cuando das cancel

Private Sub dgUsuarios_CancelCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles dgUsuarios.CancelCommand
'Finaliza edicion de la grilla
dgUsuarios.EditItemIndex = -1
LlenarGrid()
End Sub

y sería lo mismo para cuando actualizas.

Checalo y me dices que tal te fue.

Saludos
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
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 09:18.