2014-11-04 50 views
1

我的DataGridView綁定到BindingSource,它再次具有DataSet作爲其DataSource。除其他外,DataSet中的相應TableAdapter具有從Access數據庫提供數據的Fill方法。我填補我DataGridView數據如下圖所示:DataGridView在更新後顯示第一行中的一些空單元格

myTableAdapter.Fill(myDataSet.MyDataTable); 

所有這一切工作正常,並符合市場預期。當我使用UpdateQuery(也可以正常工作)更改我的數據,然後再次單擊我的DataGridView中的任意行時,出現問題 - 只要我點擊,(總是)第一行的最後兩個單元格爲顯示爲空。無論我點擊哪一行,始終是第一行中的單元格,並且僅在執行UpdateQuery之後。

當我直接檢查Access數據庫時,一切正常(即更新成功)。當我重新啓動我的應用程序時,一切都顯示出來沒有任何問題(直到下一次我撥打UpdateQuery並點擊進入我的DataGridView)。

我也打過電話EndEdit()``and刷新on the的DataGridView and calling的AcceptChanges()on both the數據集and the respective DataTable` - 什麼都沒有改變。

更新

所描述的行爲只毫無問題執行UpdateQueryInsert S和Delete工作之後發生(數據被正確地更新的,無顯示的問題)。

更新2

當我使用不同的事件處理程序的問題也存在 - 原來我用CellClick,我也用CellContentClickCellMouseClick嘗試。它甚至發生在我完全不使用鼠標的情況下,但使用鍵盤在DataGridView內導航。

這似乎是「我的」數據顯示不起作用的情況,我錯過了什麼?無論我查詢/更新數據有多簡單或複雜,我在表格中使用的所有DataGridView都會發生同樣的錯誤。

+0

嘗試設置BindigSource.AllowNew = false – daniele3004 2014-11-04 15:46:20

+0

@ daniele3004 - 嘗試過,沒有工作(如預期的 - 爲什麼這應該有所作爲?)。 – Gorgsenegger 2014-11-05 10:29:16

+0

我使用BindingSource加載一個List或Array。在我的情況下,它的作品。 – daniele3004 2014-11-05 10:47:32

回答

0

所以這原來是TextBox.Clear()方法的一些討厭的行爲。我需要添加下列信息發佈我的問題時,我並沒有認爲有必要的:

在我DataGridView我有一些數據綁定控件TextBox - 數據綁定的定義一樣

txtSomeId.DataBindings.Add("Text", myDataGridView.DataSource, "ID"); 

調用UpdateQuery方法重載我後的數據(細),然後清除那些TextBox控件的內容:

txtSomeId.Clear(); 

根據MSDN,這種方法

「清除文本框中的所有內容」。

這是該頁提供的所有信息。刪除這些代碼行,所有按預期工作,並沒有更多的問題。

調用Clear方法也意味着數據綁定被部分刪除(?)是我沒有想到的。

我寫了「部分」,因爲綁定仍然適用於DataGridViewTextBox控件中的其他行,但不適用於第一個(此處僅適用於某些單元格)。在我看來,這是一個非常奇怪的行爲,也許別人可以在這方面多說一些。

相關問題