/ / Binding Dictionary To Datagridview - c #, vinculação de dados, datagridview

Binding Dictionary To Datagridview - c #, vinculação de dados, datagridview

Eu queria vincular um dicionário a uma visualização de datagrid. Infelizmente, o Dictionary não implementa a interface necessária, então criou uma Lista>.

Essencialmente, eu quero que isso seja vinculado a um datagridview com datagridviewcomboboxcolumns. Com a coluna 1 segurando a Chave e a coluna 2 segurando o valor.

Eu tentei muitas variações, mas não consigo entender direito. Eu tentei vincular as colunas, as células individuais e o próprio datagridview. Alguém sabe como fazer isso?

EDITAR: Para esclarecer, não está vinculando o objeto que é o problema. Parece que a ligação à lista está bem, por exemplo, se eu tiver 4 itens na lista, serão adicionadas 4 linhas; no entanto, os valores estão em branco. Este é o código de exemplo:

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";
}

Obrigado.

Respostas:

4 para resposta № 1

Você pode usar seu dicionário com o seguinte Linq:

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

Isso criará um objeto anônimo que manterá sua Chave e Valor como propriedades. Esteja ciente de que o dicionário, por padrão, não está em uma ordem específica.