2011-03-12 18 views
0

在我的代碼的頂部窗體我有下面的語句(和其他一些無關的內容來):RowChanged事件觸發,並拋出一個錯誤DataAdapter.Fill方法(數據表)在

Dim LastDataRow As DataRow 
Public Event RowChanged As DataRowChangeEventHandler 

當我的形式負載我運行下面的代碼行:

AddHandler dt.RowChanged, New DataRowChangeEventHandler(AddressOf Row_Changed) 

形式加載我有一個FetchData按鈕,連接到數據庫,並帶來了記錄到一個DataTable對象之後。在此填充操作期間,我的Row_Changed事件觸發(對於我認爲的每個記錄),並嘗試運行DataAdapter.Update(DataTable)(僞代碼),最終因爲我尚未創建命令而失敗。在我的Row_Changed過程中出現的錯誤是:

當使用新行傳遞DataRow集合時,更新需要有效的InsertCommand。

我甚至沒有計劃使用InsertCommand,因爲我不會允許用戶從這個表單插入記錄。我打算允許他們刪除或修改現有記錄,但不能插入新記錄。

到目前爲止,我發現解決此問題的唯一方法是在填充數據表後運行我的AddHandler語句。但是,我試圖弄清楚如何重寫我的代碼,以便在不關閉表單/應用程序的情況下刷新數據表並重新打開它。我認爲這是一個單獨討論的問題。

任何想法,爲什麼我得到上面的錯誤消息?

回答

0

你可能在調用fill操作之前調用RemoveHandler,所以Update不會被調用。填充操作完成後,您可以再次添加處理程序。

RemoveHandler 
da.Fill(dt) 
AddHandler 
+0

我假設你的代碼過於簡化了。我是否需要指定要刪除和添加的處理程序? – HK1 2011-03-12 03:45:09

+0

@ HK1是的簡化了。我從手機上打字,所以很難打字,但如果你想要語法,你可以查看添加和刪除處理程序。 – 2011-03-12 03:52:08