2012-09-26 21 views
0

我有一種情況,我想從數組列表中填充一個DataGridView。每行包含單個數組的值。由於用戶交互,陣列的大小可以動態變化,但列表中的所有陣列始終具有相同的大小。可變大小數組的綁定列表到DataGridView

我可以動態調整DataGridView實例的列以反映數組的大小,並且我簡單地將列命名爲數組索引(「1」,「2」等)之後的列。但是我需要知道如何在DataGridView上推送實際的數據,以便更新其行。

我知道我可以使用BindingSource作爲數據源(數組列表)和DataGridView之間的中介,但我不知道如何設置它以執行必要的映射。

謝謝。

+0

請將代碼 – Paparazzi

+0

您無法將ListView綁定到多個數組。 ListView只有一個Source。 – Paparazzi

回答

2

讓我們假設你有一組這樣的陣列(也可能有所不同,但你應該明白我的意思):

var row1 = new[] { "A", "B", "C" } 
var row2 = new[] { "D", "E", "F" } 

所以現在讓我們建立一個綁定的對象:

DataTable table = new DataTable(); 
for (int i = 0; i < row1.Length; i++) { table.Columns.Add(i.ToString(), typeof(string)); } 
table.LoadDataRow(row1, true); 
table.LoadDataRow(row2, true); 

現在讓我們綁定網格:

dataGridView.DataSource = table.DefaultView; 
+0

我感謝您的回覆。只是有點背景:我已經使用DataSet作爲DataSource和Table作爲DataMember進行綁定。我還創建了一個帶有get/set訪問器的ad hoc類型,並將其實例放入列表中,並將該列表作爲DGV的DataSource對待。但是現在我想要獲取一個數組列表(其大小在任何時候都是可變的但在整個列表中是相同的)並將其推入DGV。我想知道一個BindingSource(或某個子類型)是否可以充當這種情況下的綁定中介。 – dWeld

+0

對於前兩種方法,我可以在設計時設置DGV的列(然後在運行時用實際數據填充行)。對於動態陣列,DGV的設計時間(um)設計似乎並不可行或不可取... – dWeld

+0

我做了一些非常類似的事情。沒有意識到建立一個具有所有所需特徵(具體來說:列名稱)的DataTable的強大功能。 – dWeld