有没有办法将DataGridView绑定到Dictionary并使用Keys作为列?
例如我有类似的东西:
var items = new Dictionary<string, List<int>>();
items.Add("Column 1", new List<int>{ 1, 2, 3 });
items.Add("Column 2", new List<int>{ 1, 2, 3 });
items.Add("Column 3", new List<int>{ 1, 2, 3 });
我希望看到类似的东西:
[ Column 1] [ Column 2] [ Column 3]
1 1 1
2 2 2
3 3 3
我尝试将简单字典转换为动态对象:
dynamic itemsData = new ExpandoObject();
IDictionary<string, object> items = (IDictionary<string, object>)itemsData;
items.Add("Column 1", new List<int>{ 1, 2, 3, 4, 5 });
items.Add("Column 2", new List<int>{ 1, 2, 3, 4, 5 });
items.Add("Column 3", new List<int>{ 1, 2, 3, 4, 5 });
bindingSource1.DataSource = itemsData;
dataGridView1.DataSource = bindingSource1;
但是没有效果,我得到了结果:
[ Key] [ Value ]
Column 1 System.Collect...
Column 2 System.Collect...
Column 3 System.Collect...
感谢。
答案 0 :(得分:0)
我不认为,你可以将字典绑定到DataGridView。为了将对象绑定到DataGridView的DataSource,该对象应该实现IList,ListSource但是Dictionary不会。
一种解决方法是将字典转换为数据表并将其绑定到DataGridView。
表列名为Column1,Column2 ----- ColumnN并创建相应的行数。
注意:转换开销可能会影响性能。