2012-04-11 68 views

回答

1

這裏的問題是,(顯然)DataGridView的DataSource屬性沒有按」不知道如何顯示List<List<string>>。一種方法是將您的列表組合到一個DataGridView可以綁定的對象中。這裏有幾個方法可以做到這一點:

到DataTable:

要轉換List<List<string>>到DataTable,我借來的代碼中發現here並創造了這個擴展方法:

static class ListExtensions { 
    public static DataTable ToDataTable(this List<List<string>> list) { 
     DataTable tmp = new DataTable(); 
     tmp.Columns.Add("MyData"); 
     // Iterate through all List<string> elements and add each string value to a new DataTable Row.   
     list.ForEach(lst => lst.ForEach(s => tmp.Rows.Add(new object[] {s}))); 

     return tmp; 
    } 
} 

現在,您可以使用此擴展方法從您的List<List<string>>中獲取可綁定到DataGridView的DataTable:

dataGridView.DataSource = data.ToDataTable(); 

一個匿名類型列表:

這裏是這樣的代碼:

dataGridView.DataSource = data.SelectMany(lst => lst) 
           .Select(s => new { Value = s }).ToList(); 

我們需要匿名類型,因爲一個DataGridView將無法顯示在列表中的字符串值財產沒有一點幫助,如描述here


這些方法當然都有缺點,但我相信沿這些方向的東西是最好的選擇。

1
List<List<string>> data = new List<List<string>>(); 
dataGridView.DataSource = data; 
dataGridView.Databind(); 

一些海報說,這是在這種情況下,您可以(根據MSDN)JST設置datasurce和Windows Forms沒有數據綁定

+1

Databind適用於ASP.NET; DataGridView是一個Windows窗體控件... – 2012-04-11 23:14:08

+0

Windows窗體中的DataGridView。 – BILL 2012-04-11 23:16:44

相關問題