我认为这个问题很清楚。我有一个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;
但没有任何结果。
答案 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();