2012-01-04 54 views
1

我有一個程序,我讓用戶動態添加DataGridViews到界面,這些也添加到列表中以便於管理。所有的DataGridView都有自己的數據源。我正在使用Databinding來源來添加不同的DataGridViewTextBoxColumns。VB.NET - 將列添加到DataGridView的列表中

的問題如下: 當用戶添加的第一個表下面的代碼運行:

dataGridList(dataGridList.Count -1).Clear() 
dataGridList(dataGridList.Count -1).Add(NameDataGridViewTextBoxColumn) 

有沒有問題,正確的數據顯示,但是當用戶添加第二個表我得到拋出一個異常:

「提供的列已屬於數據網格視圖」

我認爲THI很奇怪,因爲我訪問不同的DataGridView的權利?

所有這一切的關鍵在於能夠根據用戶的選擇查看所有DataGridView中的不同列。

希望你能幫助我。

回答

3

你如何確定NameDataGridViewTextBoxColumn是什麼?我的意思是你提到的textBoxColumns列表是如何創建的?

看起來你可能真的需要創建一個新的DataGridViewTextBoxColumn來添加適當的屬性集。

您可以在代碼中像這樣添加一列:

 Dim col As New DataGridViewTextBoxColumn 
     col.DataPropertyName = "PropertyName" 
     col.HeaderText = "SomeText" 
     col.Name = "colWhateverName" 
     DataGridView1.Columns.Add(col) 

一定要設置相應屬性的名稱等,您可以從現有列也將它複製...

col.DataPropertyName = NameDataGridViewTextBoxColumn.DataPropertyName 
例如,

+0

林可能失去...... 我在設計者創造的DataBindingSource有數據源「WeightData」,一類在那裏我從SQL LINQ quiery下載每行的所有信息。 WeightData類包含許多屬性和不同的列,如「NameDataGridViewTextBoxColumn」與那些屬性相同。不同的DataGridView的數據源是「WeightData」的列表... 我可能完全失去了??。 – Sultanen 2012-01-04 18:16:37

+0

我實際上是在談論列而不是他們的內容。您不需要添加從設計者創建的一個,而需要爲gridView創建一個新的列實例。具有適當的屬性。設計者創建一個列的實例,如果它添加了多次嘗試添加同一列的實例。上面的Eidted。 – Jay 2012-01-04 18:41:20

+0

它的工作原理! Thnx很棒! – Sultanen 2012-01-04 19:44:10

0

和上面一樣,您需要爲每個網格視圖創建一個新實例,並將這些列分配給您可以在回發中執行的新的網格視圖。

+0

DataGridView是一個Windows窗體控件,所以這不是一個ASP.NET應用程序。 – HardCode 2012-01-04 17:30:19

0

這是我做的。我通過我的數據庫搜索或表選擇列,然後將兩者都網格化爲一個DGV。喜歡這個。我只是玩它,現在它適用於正確對齊行。這是一個小題目,因爲它是DB,但我猜測類似的方法會簡化從其他來源添加數據。

tempAdt = New OleDbDataAdapter("SELECT firstName FROM Employees",connector) 
tableCommand = New OleDbCommandBuilder(tempAdt) 

tableAdaptor = New OleDbDataAdapter("SELECT * FROM userTable", connector) 
tableCommand = New OleDbCommandBuilder(tableAdaptor) 

Dim startTable2 As New DataTable 

tempAdt.Fill(startTable2) 
tableAdaptor.Fill(startTable2) 

主要是我用了兩個不同的適配器,它會列出他們並排DGV