将 DataGridView 绑定到字典数组<string,object>

问题描述 投票:0回答:1

我正在尝试将字典数组绑定到datagridview。

字典都将具有相同的键,并且值将始终是相同的值类型对象(具有不同的值)。因此,将使用字符串确定(并命名)列:

foreach (var kvp in array.GetValue(0) as Dictionary<string, object>)
{
    dataGridView_StructArray.Columns.Add(kvp.Key, kvp.Key);
}

因此,row 将是数组中的一个元素,因此每个单元格将是该数组元素中的对象:

for (int i = 0; i < array.GetLength(0); i++)
{
    dataGridView_StructArray.Rows.Add(((Dictionary<string, object>)array.GetValue(i)).Values.ToArray());
}

我事先不知道字典实际上会包含什么。

我想将datagridview绑定到这个数组,而不是按照上面的代码手动加载datagridview。

有什么建议...

c# winforms dictionary datagridview binding
1个回答
0
投票

嗨,我不确定你有什么数据,但我已经用一些虚拟数据在 C# windows 表单中解决了它(我假设你正在使用它,因为

DataGridView
)。

`命名空间 WindowsFormsApp1 { 公共部分类 Form1 :表格 { 公共表格1() { 初始化组件(); 对象[,] 数组 = 新对象[3, 1] { { 新词典 { { "姓名", "约翰" }, { "年龄", 25 }, { "城市", "纽约" } } }, { 新词典 { { "姓名", "爱丽丝" }, { "年龄", 30 }, { "城市", "洛杉矶" } } }, { 新词典 { { "姓名", "鲍勃" }, { "年龄", 40 }, { "城市", "芝加哥" } } } };

        DataTable dataTable = new DataTable();

        if (array.GetLength(0) > 0 && array.GetValue(0, 0) is Dictionary<string, object> firstDictionary)
        {
            foreach (var key in firstDictionary.Keys)
            {
                dataTable.Columns.Add(key, typeof(object));
            }
        }

        for (int i = 0; i < array.GetLength(0); i++)
        {
            DataRow row = dataTable.NewRow();
            for (int j = 0; j < array.GetLength(1); j++)
            {
                foreach (var kvp in (Dictionary<string, object>)array[i, j])
                {
                    row[kvp.Key] = kvp.Value;
                }
            }
            dataTable.Rows.Add(row);
        }

        dataGridView1.DataSource = dataTable;
    }
    private void Form1_Load(object sender, EventArgs e)
    {

    }
}

}` Running exe of the data

希望我正确理解了这个问题!

© www.soinside.com 2019 - 2024. All rights reserved.