绑定字典到Datagridview
本文关键字:Datagridview 字典 绑定 | 更新日期: 2023-09-27 18:14:34
我想将字典绑定到datagridview。不幸的是,Dictionary没有实现所需的接口,所以我创建了一个List>。
本质上我希望这是绑定到一个datagridviewcomboboxcolumns的datagridview。第1列保存键,第2列保存值
我已经尝试了很多变化,但我似乎不能得到这个正确的。我已经尝试绑定到列、单个单元格和datagridview本身。有人知道怎么做吗?
编辑:澄清它没有绑定到问题所在的对象。它似乎绑定到列表,例如,如果我在列表中有4个项目,那么添加4行,但是值是空的。下面是示例代码:
additionalMetadata1.dataGridView1.DataSource = animal.AdditionalMetaData;
foreach (DataGridViewRow row in additionalMetadata1.dataGridView1.Rows)
{
DataGridViewCustomComboCell cell = row.Cells[0] as DataGridViewCustomComboCell;
cell.DataSource = animal.AdditionalMetaData;
((DataGridViewCustomComboColumn)additionalMetadata1.dataGridView1.Columns[0]).DisplayMember = "Key";
((DataGridViewCustomComboColumn)additionalMetadata1.dataGridView1.Columns[0]).ValueMember = "Key";
((DataGridViewCustomComboColumn)additionalMetadata1.dataGridView1.Columns[0]).DataPropertyName = "Key";
}
谢谢。
你可以使用下面的Linq:
dataGridView.DataSource = (from d in dictionary
orderby d.Value
select new
{
d.Key,
d.Value
}).ToList();
这将创建一个匿名对象,它将保存键和值作为属性。请注意,字典在默认情况下没有特定的顺序。
试一下
dataGridView1.ColumnCount = 2;
foreach (KeyValuePair<string, string> kvp in dict) {
string[] arow = new string[] { kvp.Key, kvp.Value };
dataGridView1.Rows.Add(arow);
}
或
dataGridView1.DataSource = dict.ToArray();
或
dataGridView1.DataSource = dict.Select((kv => new {
myKeys = kv.Key,
myValues = kv.Value
})).ToArray();