如何将锯齿状数组绑定到 DataGridView?

Posted

技术标签:

【中文标题】如何将锯齿状数组绑定到 DataGridView?【英文标题】:How to bind a jagged array into DataGridView? 【发布时间】:2016-11-09 05:30:46 【问题描述】:

我有一个包含不同类型数据(int、string、float)的二维数组。

如何将其绑定到数据网格视图?

或者将其转换为数据View或BindingList或DataTable,然后绑定到datagridview?

编辑: Object[,] 是完全动态的数据(不同的行、列、数据类型。,像转储数据):(Excel 工作表)

[0,x] "kjslwe" 3 "w" 45 "erer" 643 "reew" "54" 56 34

[1,y] 23 "e" 1 "sf" 123213 "ds" 343433

【问题讨论】:

数据结构是什么?共享数据样本。此外,如果这是一个 winforms 问题,请删除 asp.net 标记。 我已经编辑了这个问题,添加了额外的细节。它是一个二维对象数组,在行和列中存储多种类型的数据(可以在几列为空) 为什么要绑定?您可以通过解析代码中的数据自行创建行。 【参考方案1】:

您使用的不是2D Array,而是Jagged Array。锯齿状数组是其元素为数组的数组。锯齿状数组的元素可以具有不同的维度和大小。锯齿状数组有时被称为“数组数组”。

要在DataGridView 中显示锯齿状数组,您可以先计算所需的列数并设置网格的ColumnCount 属性。然后使用Rows 接受param object[] 的网格集合的Add 重载方法添加行。例如:

object[][] data = new object[][] 
        new object[] "kjslwe", 3, "w", 45, "erer", 643, "reew", "54", 56, 34,
        new object [] 23, "e", 1, "so", 123213, "ds", 343433
;

var columns = data.Max(x => x.Count());         /* Calculate number of columns */
grid.ColumnCount = columns;                     /* Set column count of grid   */
data.ToList().ForEach(x => grid.Rows.Add(x));   /* Add rows                    */

在上面的例子中,我还设置了这些属性:

grid.AllowUserToAddRows = false;
grid.AllowUserToDeleteRows = false;
grid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader;

【讨论】:

以上是关于如何将锯齿状数组绑定到 DataGridView?的主要内容,如果未能解决你的问题,请参考以下文章

将对象数组绑定到 DataGridView 控件

如何将 DataGridView 组合框添加到绑定的 DataGridView 数据源(以编程方式)

如何将数据源绑定到 DataGridView 或 ListView

如何将数据源绑定到 datagridview 组合框和复选框

如何将 List<string> 绑定到 DataGridView 控件?

如何将每行具有不同组合框项的 DataTable 绑定到 DataGridView?