我正在尝试将字典数组
字典都将具有相同的键,并且值将始终是相同的值类型对象(具有不同的值)。因此,将使用字符串确定(并命名)列:
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# windows 表单中解决了它(我假设你正在使用它,因为
DataGridView
)。
`命名空间 WindowsFormsApp1
{
公共部分类 Form1 :表格
{
公共表格1()
{
初始化组件();
对象[,] 数组 = 新对象[3, 1]
{
{ 新词典
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)
{
}
}
希望我正确理解了这个问题!