2012-02-16 64 views
1

我使用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沒有最後的變化?

在此先感謝!

+0

它認爲它的,因爲數據表不維護連接到一個源... – 2012-02-16 08:44:54

+0

很抱歉,但我不知道了解你的心意。 – wertyk 2012-02-16 09:08:35

回答

1

嘗試將BindingSource組件來處理數據,並且不電網直接鏈接到數據

+0

你必須記住這一點: 如果CType(GridEx1.DataSource,DataTable).GetChanges()IsNot Nothing然後...一些問題:( – wertyk 2012-02-16 09:05:50

+0

有人有一些想法? – wertyk 2012-02-22 08:19:54

相關問題