2013-09-05 38 views
0

我有一個包含一些列的數據網格:
類別ID,SubcategoryID,SubcategoryName (無形的,看不見的,可見的)C#的DataGridView - 新行包含被選中後,垃圾

當創建新的子類別, CategoryID被請求。

我從UI輸入新的子類別名稱。如果我按下回車鍵,它會結束當前的行編輯,並選擇下面的行,而不用開始編輯模式(它會被突出顯示)。此臨時選擇會導致我的SubcategoryName以默認空單元格值nullstring.empty值。

然後,當我嘗試將數據發送回數據庫時,它會導致問題。數據適配器引發一個錯誤,說CategoryID不能爲空。從我測試過的這個是由包含一些看不見的垃圾的新行引起的。如果我編輯新行並輸入正常的子類別名稱,則一切正常(類別ID由檢測到子類別名稱不爲空的函數插入)。

如何確保我的新行數據被刪除?

我tryed與SendKeys.Send( 「{} ESC」)DG_SubcategoryEdit.CancelEdit()

回答

0

發送ESC鍵,一段時間後,試圖解決我發現了這個問題,只要你想在某行中插入某些東西作爲用戶添加的內容,就應該始終使用DefaultValuesNeeded事件而不是RowValidated。如果未提交版本,則DefaultValuesNeeded會正確刪除行的剩餘部分。如果您插入任何內容,即使爲空,也可以在RowValidated中按行編輯,並嘗試將其自身同步到數據庫。

令人困惑的部分(也可能是一個bug)是包含null的「已編輯」行在DataGridView底部顯示爲新的空行,而不是普通的空行。因此,如果您嘗試刪除新行,則此行將引發錯誤,指出您無法刪除新行。