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

我创建了一个二维字符串数组并填充它。 我尝试将它绑定到DataGrid控件,如下所示:

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

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

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

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

您需要使用要作为列绑定的属性从数组中创建一个新对象(例如类的可枚举列表)。 一种快速的方法是使用匿名类型,使用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.然后,我们将网格构建为匿名类型的枚举。 这看起来像是这样的:

在此处输入图像描述

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

您需要将数组转换为数据表

 string[][] Array = new string[100][]; DataTable dt= new DataTable(); int l= Array.length; for(int i=0;i 

你可以这样做

 string[][] Array = new string[100][]; ArrayList arrList = new ArrayList(); for(int i=0;i<100;i++) { arrList.Add(new ListItem(Array[i, 0], Array[i, 1])); } Grid2D.DataSource = arrList; Grid2D.DataBind(); 

请参阅此链接将绑定数组绑定到ASP.Net中的GridView

 using Linq; var Found = (from arr in myArray2D select new { row1 = arr[0], row2 = arr[1], row3 = arr[2] }) .Where(y => (y.row1.ToUpper() + y.row2.ToUpper()) .Contains(sText.ToUpper())) .OrderByDescending(y => Convert.ToInt32(y.row3)).ToList(); dataGridViewFind.DataSource = Found; dataGridViewFind.AutoResizeColumns();