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