2013-03-01 21 views
6

我创建了一个2维数组的字符串并填充它。我尝试将其绑定到一个DataGrid控件,像这样:如何使用DataGridView显示此数组的内容?

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

不是看到阵列I看到下面列的内容:长度,LongLenth,排名,SyncRoot上,IsReadOnly,IsFixedSize,IsSyncrhonized。

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

+0

你希望如何看到,信息进入GV? – 2013-03-01 20:18:34

+0

您的XAML对于DataGrid控件的外观如何? – ryrich 2013-03-01 20:23:12

+0

对于[x] [y]我希望每一行代表[X] ...和列代表[Y],这样[2] [5]的内容将显示在数据网格中的第2排,第5列。 – phan 2013-03-01 20:23:57

回答

3

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

您需要从数组中创建一个新对象(例如一个类的可枚举列表),并使用要作为列绑定到的属性。做到这一点的一种快速方法是使用匿名类型,使用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文件中以声明方式完成。

2

您需要将数组转换为一个DataTable

string[][] Array = new string[100][]; 
DataTable dt= new DataTable(); 

int l= Array.length; 

for(int i=0;i<l;i++) { 
    dt.LoadDataRow(Array[i], true); //Pass array object to LoadDataRow method 
} 

dataGridView.DataSource = dt; 
0

你可以做这样的事情

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(); 

请参阅此链接Binding Arrays to GridView in ASP.Net

0
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(); 
+0

这些命令在数组的第1列和第2列中搜索文本,并通过将数组的第1,2和3列返回,并将其从第3列按字符串转换为数字进行排序。 – 2017-03-22 00:07:24