将字典绑定到 Datagridview

Dar*_*ung 0 c# data-binding datagridview

我想将字典绑定到 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";
         }
Run Code Online (Sandbox Code Playgroud)

谢谢。

Wou*_*ort 5

您可以在以下 Linq 中使用您的字典:

 dataGridView.DataSource =  (from d in dictionary
                             orderby d.Value
                             select new
                              {
                               d.Key,
                               d.Value
                             }).ToList();
Run Code Online (Sandbox Code Playgroud)

这将创建一个匿名对象,将您的 Key 和 Value 作为属性。请注意,字典默认情况下没有特定顺序。