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