我使用Windows窗體和窗體上的工作,我有一個DataGridView。這個gridView我填寫了一個DataTable dt。 dt我用OdbcDataAdapter填充。爲了保存更改,我在事件處理程序gridView_RowLeave上使用adaper.Update(dt)。問題是dt沒有gridView的最後更改。例如,如果我在一行中修改某些數據或在離開該行時添加一個包含數據的新行,則方法dt.GetChages()返回false,並且我必須爲dt.GetChanges()返回true以使該行更多。哪裏可以解決問題?這裏是我的代碼:如果DataTable.GetChanges()沒有上次更改,如何保存數據庫上的所有更改?
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沒有最後的變化?
在此先感謝!
它認爲它的,因爲數據表不維護連接到一個源... – 2012-02-16 08:44:54
很抱歉,但我不知道了解你的心意。 – wertyk 2012-02-16 09:08:35