我创建了一个二维字符串数组并填充了它。我尝试像这样将它绑定(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 个字符串的数组。我们正在从这两个字符串中创建一个匿名类型。此类型有两个属性:Col1
和 Col2
。 Col1
将被设置为数组索引 0,而 Col2
将被设置为数组索引 1。然后,我们将构建匿名类型枚举的网格。这看起来像:
当然,您可以通过将 AutoGenerateColumns
设置为 False 并填充 Columns
集合来准确定义列的创建方式。这也可以在您的 ASPX 文件中以声明方式完成。
关于c# - 如何使用 DataGridView 显示此数组的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15166132/