日期:2014-05-18  浏览次数:20525 次

datagrid如何绑定二维数组或特定文件中的内容
datagrid如何绑定二维数组或特定文件中的内容,也就数据源不是从数据库中得到的。
例如:
我有三行三列的数据,如下:

1   王小二   男
2   张小三   男
3   小红帽   女
我想用datagrid把它们绑定.
有代码最好,没有的话,给点提示或网址。

------解决方案--------------------
在控制下现写了一个

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Collections;

namespace ConsoleApplication4
{
class Program
{
public static DataTable Creat()
{
DataTable dt = new DataTable();
dt.Columns.Add( "id ", Type.GetType( "System.String "));
dt.Columns.Add( "name ", Type.GetType( "System.String "));
dt.Columns.Add( "sex ", Type.GetType( "System.String "));
return dt;
}

static void Main(string[] args)
{
Test test1 = new Test( "1 ", "王小二 ", "男 ");
Test test2 = new Test( "2 ", "张小三 ", "男 ");
Test test3 = new Test( "3 ", "小红帽 ", "女 ");

ArrayList ar = new ArrayList();
ar.Add(test1);
ar.Add(test2);
ar.Add(test3);

DataTable dt = Creat();

foreach (Test t in ar)
{
DataRow dr = dt.NewRow();
dr[ "id "] = t.id;
dr[ "name "] = t.name;
dr[ "sex "] = t.sex;

dt.Rows.Add(dr);
}

DataGrid1.DataSource = dt;
DataGrid1.DataBind();
}
}

class Test
{
public string id;
public string name;
public string sex;
public Test()
{

}
public Test(string id, string name, string sex)
{
this.id = id;
this.name = name;
this.sex = sex;
}
}
}

------解决方案--------------------
所有复杂的列表控件 GridView/DataList/DataGrid/Repeater 均无法直接绑定多位数组,只能绑定一维数组,多维数组会带歧义性

解决方案是,先读取数据到 DataTable, DataTable 不正是一个二维表吗?

DataGrid1.DataSource = CreateTable();
DataGrid1.DataBind();

public static DataTable CreatTable()
{
// 建表结构
DataTable dt = new DataTable();
dt.Columns.Add( "id ", Type.GetType( "System.Int32 "));
dt.Columns.Add( "name ", Type.GetType( "System.String "));
dt.Columns.Add( "sex ", Type.GetType( "System.String "));

// 写数据
// 方法同你如何读取的二维数据
dt.Rows.Add(1, "王小二 ", "男 ");
dt.Rows.Add(2, "张小三 ", "男 ");
// ...
// ...

return dt;
}
}