c# - 如何使用 DataGridView 显示此数组的内容?

标签 c# arrays visual-studio-2010 datagridview

我创建了一个二维字符串数组并填充了它。我尝试像这样将它绑定(bind)到 DataGrid 控件:

string[][] Array = new string[100][];
dataGridView.DataSource = Array;

我没有看到数组的内容,而是看到以下列:Length、LongLenth、Rank、SyncRoot、IsReadOnly、IsFixedSize、IsSyncrhonized。

因此它不显示数组的内容,而是显示数组的属性。我做错了什么?

最佳答案

当您允许网格控件自动生成列时,它基本上会枚举该对象的属性并为每个属性创建一列。它无法知道您想要将其显示为数组值的网格。

您需要从数组中创建一个新对象(例如类的可枚举列表),并将要绑定(bind)到的属性作为列。一种快速的方法是使用匿名类型,使用 LINQ 查询构建。像这样的东西:

string[][] Array = new string[100][];
for(int i = 0; i < 100; i++) // Set some values to test
   Array[i] = new string[2] { "Value 1", "Value 2" };

dataGridView.DataSource = (from arr in Array select new { Col1 = arr[0], Col2 = arr[1] });
Page.DataBind();

在这里,我们遍历数组的所有 100 个元素。每个元素都是 2 个字符串的数组。我们正在从这两个字符串中创建一个匿名类型。此类型有两个属性:Col1Col2Col1 将被设置为数组索引 0,而 Col2 将被设置为数组索引 1。然后,我们将构建匿名类型枚举的网格。这看起来像:

enter image description here

当然,您可以通过将 AutoGenerateColumns 设置为 False 并填充 Columns 集合来准确定义列的创建方式。这也可以在您的 ASPX 文件中以声明方式完成。

关于c# - 如何使用 DataGridView 显示此数组的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15166132/

相关文章:

python - 在 ndim(第四个轴)中堆叠数组并使用 numpy 应用旋转

visual-studio - 加速 VisualStudio 2010 和 Resharper 6.1 : Is it worth to use RamDisk?

c# - 如何修复 Asp.NET MVC 中的 "This dictionary requires a model item of type"?

c# - 在 C# 中使用 sqlite 进行 SQL 转义

c - 如何通过省略逗号来读取带逗号的字符串 %[^,] 不适合我

ios - 让 Swift 2.1 中的数组行为

visual-studio - 是否可以使用 Visual Studio Debugger 的 Watch 窗口查看内存位置的值?

visual-studio-2010 - 在没有 VSDBCMD 的情况下部署 VS2010 数据库项目?

c# - 根据ViewModel中的属性更改DataGrid的边框颜色

c# - 将带有数组的 JSON 反序列化为 DataTable?