我有存儲數據的一些列表如何在C#中動態設置DataGridView的源代碼?
List<List<string>> data = new List<List<string>>();
如何正確地將其分配給?
我有存儲數據的一些列表如何在C#中動態設置DataGridView的源代碼?
List<List<string>> data = new List<List<string>>();
如何正確地將其分配給?
這裏的問題是,(顯然)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。
這些方法當然都有缺點,但我相信沿這些方向的東西是最好的選擇。
List<List<string>> data = new List<List<string>>();
dataGridView.DataSource = data;
dataGridView.Databind();
一些海報說,這是在這種情況下,您可以(根據MSDN)JST設置datasurce和Windows Forms沒有數據綁定
Databind適用於ASP.NET; DataGridView是一個Windows窗體控件... – 2012-04-11 23:14:08
Windows窗體中的DataGridView。 – BILL 2012-04-11 23:16:44