Hola:
Tengo un datagrid que aparentemente hacia el update bien,pero nada mas tenia un registro para prueba, a la hora que tengo mas registros, nada mas hace el update en el primer registro en los otros no hace el update enla base de datos, solo lo hace en el grid. Gracias .
 
El código es este:
 
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Introducir aquí el código de usuario para inicializar la página
 
        If Not Me.IsPostBack Then
            inicia_adapter_consulta()
            filldataset()
            Session("dataset") = ds
            binddatagrid()
        Else
            ds.Clear()
            ds = DirectCast(Session("dataset"), DataSet)
        End If
 
End Sub
 
 
 
 Sub filldataset()
 
        cn.Open()
        datitles.Fill(ds, "consulta")
        dapubs.Fill(ds, "enfermedades")
        cn.Close()
        ds.Relations.Add("consenfe",     ds.Tables("enfermedades").Columns("IdEnfermedad"), ds.Tables("consulta").Columns("IdEnfermedad"))
 
End Sub
 
 
 
 
 
Sub binddatagrid()
        DataGrid1.DataSource = Nothing
        DataGrid1.DataSource = ds.Tables("consulta")
        DataGrid1.DataKeyField = "IdPaciente"
        DataGrid1.DataBind()
        If DataGrid1.EditItemIndex >= 0 Then
            Dim dgi As DataGridItem =  DataGrid1.Items(DataGrid1.EditItemIndex)
            Dim dropdownlist1 As DropDownList = DirectCast(dgi.FindControl("dropdownlist1"), DropDownList)
            dropdownlist1.DataSource = ds.Tables("enfermedades")
            dropdownlist1.DataTextField = "enfermedad"
            dropdownlist1.DataValueField = "IdEnfermedad"
            dropdownlist1.DataBind()
            Dim dr As DataRow
            dr = getdatarow(DataGrid1.DataKeys(DataGrid1.EditItemIn  dex.ToString))
        End If
 
End Sub
 
 
 
 Function getdatarow(ByVal id As String) As DataRow
        Dim drows() As DataRow
        drows = ds.Tables("consulta").Select("IdPaciente='" & id & "'")
        If drows.Length > 0 Then
            Return drows(0)
        End If
 
 
 
Private Sub DataGrid1_Editcommand(ByVal source As System.Object, ByVal e As DataGridCommandEventArgs) Handles DataGrid1.EditCommand
        DataGrid1.EditItemIndex = e.Item.ItemIndex
        binddatagrid()
 
    End Sub
 
    Private Sub DataGrid1_UpdateCommand(ByVal source As System.Object, ByVal e As DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand
        Dim dgi As DataGridItem = DataGrid1.Items(e.Item.ItemIndex)
        Dim dr As DataRow = getdatarow(DataGrid1.DataKeys(e.Item.ItemIndex).To  String)
        Try
            dr("IdPaciente") = DirectCast(dgi.Cells(0).Controls(0), TextBox).Text
            dr("Fecha_consulta") = CDate(DirectCast(dgi.Cells(1).Controls(0), TextBox).Text)
            Dim dropdownlist1 As DropDownList = DirectCast(dgi.FindControl("dropdownlist1"), DropDownList)
            dr("IdEnfermedad") = dropdownlist1.SelectedItem.Value
            dr("receto") = DirectCast(dgi.Cells(3).Controls(0), TextBox).Text
            DataGrid1.EditItemIndex = -1
        Catch miexception As System.Exception
            Console.WriteLine(miexception.Message)
 
        End Try
 
 
        inicia_adapter_consulta()
        If ds.HasChanges Then
            Label6.Text = "entre a modificart"
            Try
                cn.Open()
            Catch miexception As System.Exception
                Console.WriteLine(miexception.Message)
            End Try
 
            Try
                datitles.Update(ds, "consulta")
                datitles.Fill(ds, "consulta")
                binddatagrid()
            Catch miexception As System.Exception
                Console.WriteLine(miexception.Message)
 
            End Try
        End If
    End Sub 
  
 
