我使用Windows窗体并在表单上有一个DataGridView。这个gridView我填充了DataTable dt。我用OdbcDataAdapter填充dt。为了保存我在事件处理程序gridView_RowLeave上使用adaper.Update(dt)的更改。问题是dt没有gridView的最后更改。例如,如果我在一行中修改某些数据或在我离开该行时添加带有数据的新行,则方法dt.GetChages()返回false,我必须为dt.GetChanges()返回更多的1行。哪里可以问题?这是我的代码:
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没有最后的更改?
提前致谢!
答案 0 :(得分:1)
尝试使用bindingSource组件来处理数据,而不是将网格直接链接到数据