2011-06-12 73 views
2

我有2個DataGridViews,它是一種MasterDetail表格。我在Detail DataGridView中遇到了一個名爲「dgw」的問題。它的數據源是可數據表,dgw.DataSource=DataTable;。在代碼中,我做了一些與更改名稱列一樣的工作,添加一些列,dgw.Columns.Add(NewColumn);更改列的類型,使某些列不可見等。如何在DataSource刷新後保留datagridview的「模式」

問題是,當我再次設置dgw的DataSource時,行在Master DataGridView中發生了變化,我所有在dgw中的列的工作都消失了,我看到「醜陋」的列而沒有對它們做出任何更改。

這就是我如何刷新dgw的DataSource,在MasterDataGridView的每一行更改時調用代碼。

dgw.DataSource = typeof(DataTable); 
dgw.DataSource = GetVCVDataSource(dataTable); 

我找到了一些解決方案,我認爲第一行應該做的工作,但我可能沒有得到的想法。之前它是dgw.DataSource = null;,我用它來關閉在數據源分配期間發生的事件。

我相信必須有一些簡單的解決方案,但我不能解決它。

謝謝你的任何建議。

+0

你爲什麼不只是創建的每一個你設置你調用該方法來重新網格中的數據源時間的方法,它格式化到DataGrid和? – 2011-06-12 09:29:42

+0

因爲我確信這不是正確的解決方案。你必須一次又一次地做到這一點...... Marc Gravell幫我找到了一條路。 – pesaak 2011-06-12 10:32:38

回答

1

我懷疑那裏的第一行會傷害你;以下更合適:

xx.DataSource = null; 
xx.DataSource = GetVCVDataSource(dataTable); 

這將重新綁定,而不必擔心中間不同的類型。

此外,在一些點更早(僅一次):

xx.AutoGenerateColumns = false; 
+0

謝謝!我知道這是愚蠢的!它是安靜的複雜代碼的一部分,我忘了設置dgw.AutoGenerateColumns = false; Btw。它看起來像是設置DataSource爲null或typeof(DataTable)無關緊要,在這種情況下,兩者似乎都能正常工作。 – pesaak 2011-06-12 10:35:21