2017-10-10 11 views
0

澄清發生問題之前DGV中發生的情況。我用數據加載我的DGV,並將第一列設置爲主鍵列。除下面的情況外,添加和編輯數據是完美的。DataGridView.DataError事件,保持行上的更改與導致錯誤的單元格不同

當編輯一個現有的行(有多列)時,爲了參考的目的,總共說3個。我更改列2和3中的值。然後,將第1列的值(主鍵列)更改爲主鍵列中現有值的值。然後,這引發了DataError事件,我相應地處理了它(我對此感到滿意,除此之外我還處理了它)。在事件結束時,整行編輯的內容還原(改回原來的),我想停止這一點(我設置了焦點,並開始編輯第1列的單元格,並重新開始編輯過程)。

目前它會處理錯誤,並做我需要的一切,但我無法找到該事件,也沒有阻止它在DataError事件觸發後放棄我的更改。

任何人都可以請我指出一個事件或停止這種丟棄數據的方式。

如果您需要更多信息,請讓我知道,我會協助。我沒有發佈任何代碼,因爲它在這個瞬間不相關,因爲我試圖找到放棄我的更改的事件/方法的入口點。

回答

0

在這裏的成員的幫助下,我發現了這個問題。所以基本上它歸結爲在CellEndEdit事件執行時不提交值。

Dim row As DataRowView = DirectCast(DataGridView.CurrentRow.DataBoundItem, DataRowView) 
If (row Is Nothing OrElse Not row.IsNew) Then 
    Validate() 
    DataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit) 
End If 

我只因爲我想還原,而且當DataError上升,從而使用戶可以更改值或將其進入編輯狀態,這個值是不是我的主鍵的列執行此作爲原始價值。

我也檢查行是否是新的,因爲這種情況不會發生在新行上。

相關問題