如何将Dictionary绑定到DataGridView的DataSource

时间:2013-12-05 22:49:51

标签: c# dictionary datagridview

我认为这个问题很清楚。我有一个Dictionary实例,我想像DataGridView实例的DataSource一样绑定它。实际上我可以这样直接绑定它:

Dictionary<string,string> d = new Dictionary<string,string>();
d.Add("1","test1");
d.Add("2","test2");
DataGridView v = new DataGridView();

v.DataSource = d;

但没有任何结果。

3 个答案:

答案 0 :(得分:3)

查看docs的DataSource属性。它只处理特定类型(IList,IListSource等)。所以你不能将它绑定到IDictionary。所以,这将有效:

List<KeyValuePair<string, string>> d = new List<KeyValuePair<string, string>>();
d.Add(new KeyValuePair<string, string>("1", "2323"));
d.Add(new KeyValuePair<string, string>("2", "1112323"));

DataGridView v = new DataGridView();
v.DataSource = d;

答案 1 :(得分:3)

如果你真的想要绑定到字典,你可以尝试使用linq,其中foreach KeyValuePair你将创建一个匿名类型并转换为如下列表:

假设您的datagridview名为dataGridView1:

Dictionary<string, string> d = new Dictionary<string, string>();
d.Add("1", "test1");
d.Add("2", "test2");
dataGridView1.DataSource = (from entry in d
                            orderby entry.Key
                            select new{entry.Key,entry.Value}).ToList();

答案 2 :(得分:0)

一个老问题,但是由于我偶然发现了这个问题,也许其他人也会这样做。词典知道如何使自己进入列表,因此可以做到这一点:

myDataGrid.DataSource = myDictionary.ToList();