2015-05-25 37 views
0

This article here描述處理併發異常。重現此問題的步驟如下:處理DataGridView中的併發異常

  1. 創建一個新的Windows應用程序項目。
  2. 根據Northwind Customers表創建一個新的數據集。
  3. 使用DataGridView創建表單以顯示數據。
  4. 使用Northwind數據庫中Customers表中的數據填充數據集。
  5. 填充數據集後,使用Visual Studio中的Visual Database Tools直接訪問Customers數據表並更改記錄。
  6. 然後在窗體上將相同的記錄更改爲不同的值,更新數據集並嘗試將更改寫入數據庫,這會導致併發錯誤的發生。
  7. 捕獲錯誤,然後顯示記錄的不同版本,允許用戶確定是繼續並更新數據庫還是取消更新。

我的問題是,爲什麼會發生這種情況?爲什麼我不能保存和編輯DataGridView中的記錄而不引起任何錯誤?我正在用DataGridView創建一個應用程序,而且我正面臨着這個問題。我需要一些方法來避免或解決此錯誤,而不通知用戶,因此無論他們在DataGridView中看到的內容都完全按照您看到的方式保存。這個錯誤的原因是什麼?

+0

似乎像DBConcurrencyException僅在受影響的行數等於零時調用。我假設記錄被刪除或主鍵可以更新。 –

+0

每當我編輯剛剛保存的行或者當我使用相同的數據(主鍵除外)編輯兩行之一時,就會發生這種情況。那麼受影響的行數如何爲零呢? – HajdaCZ

+0

爲什麼要忽略這樣的異常? –

回答

0

解決方案結果非常簡單。

您只需要在每次保存後將數據重新加載到DataGridView中。

所以對於BindingNavigator保存按鈕的代碼現在:

this.Validate(); 
this.maintableBindingSource.EndEdit(); 
this.tableAdapterManager.UpdateAll(this.yourDataSet); 
this.maintableTableAdapter.Fill(this.yourDataSet.yourtable); 

我不知道爲什麼這個作品,所以我需要一個專家來證實這一點。雖然工作解決方案

感謝E-Bat在我的腦海中植入這個想法。