Я работаю с окнами форм и на форме у меня есть DataGridView. Этот gridView я заполняю с помощью DataTable dt. DT я заполняю с помощью OdbcDataAdapter. Для сохранения изменений я использую adaper.Update (dt) в обработчике событий gridView_RowLeave. Проблема в том, что у dt нет последних изменений gridView. Например, если я изменяю некоторые данные в одной строке или добавляю новую строку с данными, когда я покидаю эту строку, метод dt.GetChages () возвращает false, и я должен оставить больше 1 строки для dt.GetChanges () возвращает true. Где может быть проблема? Вот мой код:
Private Sub FillGridview()
Dim adapter As OdbcDataAdapter
Dim sCommand As New OdbcCommand("Select * from SPEAKERS", con)
adapter = New OdbcDataAdapter(sCommand)
adapter.UpdateCommand = UpdateCommand() 'return a query for Update
adapter.InsertCommand = InsertCommand() 'return a query for Insert but without ID
adapter.DeleteCommand = DeleteCommand()
Try
adapter.Fill(dt)
Catch ex As Exception
MsgBox(ex.Message)
End Try
gridView.DataSource = dt
End Sub
Private Sub gridView_RowLeave(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles gridView.RowLeave
gridView.EndEdit()
If dt.GetChanges() IsNot Nothing Then
Try
Dim res As Integer = adapter.Update(dt)
Catch ex As Exception
MsgBox(ex.Message)
dt.Clear()
adapter.Fill(dt)
End Try
If Not dt.HasErrors Then
dt.AcceptChanges()
End If
gridView.Refresh()
End If
End Sub
Кто-нибудь знает, почему у dt нет последних изменений?
Заранее спасибо!