请大家来看一段小代码!能找一找错吗?
从DataGrid1中取出数据到DataTable在DataGrid2中显示
private void Button1_Click(object sender, System.EventArgs e)
{
DataTable t = new DataTable();
t.Columns.Add("id");
t.Columns.Add("name");
for(int i=0;i<DataGrid1.Items.Count;i++)
{
DataRow dr = t.NewRow ();
for(int j=0;j<DataGrid1.Columns.Count;j++)
{
dr[j] = DataGrid1.Items[i].Cells[j].Text;
}
t.Rows.Add(dr);
}
DataGrid2.DataSource = t.DefaultView;
DataGrid2.DataBind();
}
原以为代码对的,谁知用了没有取到数据,但是取的行数对了!里面全是空!!!
我是想要取得DataGrid1里面的数据放进一个DataTable里面而已!
问题点数:50、回复次数:15Top
1 楼fayewang(飞狐)回复于 2005-04-04 09:52:32 得分 1
你的t.Columns.Add("id",后面的数据类型加上去试一试)Top
2 楼David_du(流川枫)回复于 2005-04-04 09:57:32 得分 0
不行呀,会报错,编都过不去!Top
3 楼conner(测试)回复于 2005-04-04 09:58:40 得分 1
当你单击此按钮的时候是不是DataGrid1的数据已经不存在了,是不是要先给DataGrid1先绑定一下。Top
4 楼David_du(流川枫)回复于 2005-04-04 10:05:30 得分 0
不是呀,之前DataGrid1里面已经有数据了,而且按按钮的时间可以看到DataGrid1里面有数据!Top
5 楼maxxxz(ma)回复于 2005-04-04 10:15:49 得分 1
foreach(DataGridItem item in DataGrid1.Items) //Items 是一行数据,包括中间的控件
{
Textbox textboxTmp = (Textbox)item.FindControl("Textbox1");//你放id的那个控件的名称
DataRow dr = t.NewRow ();
if(textboxTmp !=null)
{
dr["id"]=textboxTmp.Text;
}
textboxTmp = (Textbox)item.FindControl("Textbox2");
if(textboxTmp !=null)
{
dr["Name"]=textboxTmp.Text;
}
t.Rows.Add(dr);
}
Top
6 楼maxxxz(ma)回复于 2005-04-04 10:19:31 得分 0
你要把你控件里面的数据从放该数据的文本或label框中取出来才可以。Top
7 楼mazekui(悠悠春竹)回复于 2005-04-04 10:20:06 得分 45
问题在这里,当你定义了列名以后,你就得使用列名。
改成
DataRow dr = t.NewRow ();
dr["id"] = DataGrid1.Items[i].Cells[0].Text;
dr["name"] = DataGrid1.Items[i].Cells[1].Text;
t.Rows.Add(dr);Top
8 楼David_du(流川枫)回复于 2005-04-04 10:29:18 得分 0
To maxxxz(ma)
我要的是从DataGrid1里面取呀,不是从控件中取Top
9 楼David_du(流川枫)回复于 2005-04-04 10:31:56 得分 0
mazekui(悠悠春竹)
果然正确,谢谢了,不过有没有办法不定义列名,取得DataGrid1里面的列名呢?
Top
10 楼David_du(流川枫)回复于 2005-04-04 10:35:49 得分 0
也就是说我不知道列名,也不知道有几列,DataGrid1所有数据都是绑定的,但是我只能从DataGrid1里面取数据,怎么才能让取得数据可以和绑定到DataGrid1里面的数据一模一样呢?Top
11 楼Compass_(指南针)回复于 2005-04-04 10:39:27 得分 1
//清空数据源
DataGrid2.DataSource = null;
DataGrid2.DataBind();
//再执行绑定
DataGrid2.DataSource = t;
DataGrid2.DataBind();
Top
12 楼David_du(流川枫)回复于 2005-04-04 10:41:42 得分 0
Compass_(指南针)
有什么用呀? DataGrid2根本就没有用过,何必还要去清空呢?
Top
13 楼daisylh(麗達)回复于 2005-04-04 10:44:35 得分 1
DataGrid1.Columns.Count()可以計算出DATAGRID共有幾列
那你就先用行的迴圈再用列的迴圈來進行讀取Top
14 楼David_du(流川枫)回复于 2005-04-04 10:48:56 得分 0
大哥,可不可以写两句呀?Top
15 楼David_du(流川枫)回复于 2005-04-04 11:01:14 得分 0
不是吧,我取出来,居然是0列!!!!!!!!!!!Top




