怎么把datagridview里的一些行放到datatable

lpt1122 2010-07-06 11:14:45
把datagridview里checkbox列选中的行取出来放到一个datatable里
代码如下:

datatable table=new datatable();
foreach (DataGridViewRow dr in this.dataGridView2.Rows)
{

DataGridViewCheckBoxCell cbx = (DataGridViewCheckBoxCell)dr.Cells[0];
if (!(bool)cbx.FormattedValue)
{
DataRow row = table.NewRow();
row = (dr.DataBoundItem as DataRowView).Row;
table.Rows.Add(row);

}
}

但总是有错。说row已经属于另一个表。怎么回事,该怎么改
...全文
108 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvfeng19806001 2010-07-07
  • 打赏
  • 举报
回复
错的原因阿捷已经说的很明白了,改法可以用如梦的,
先克隆DataTable的结构:DataTable dt2 = dt.Clone();
然后再赋值:dt2.Rows.Add(dt.Rows[i].ItemArray);
ylj718 2010-07-07
  • 打赏
  • 举报
回复
干脆直接将行里的值取出来,然后赋给table的行得了。
lpt1122 2010-07-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 computerfox 的回复:]
你这样肯定不行了,你必须这样!

提示信息很明确了,(dr.DataBoundItem as DataRowView).Row是引用类型,你直接赋值给row,当然导致了两个引用都指向同一个对象,而原先的行已经属于某个表了,所以必须拷贝所有的列数据,你可以在拷贝前,保证两个表的结构是一样的!

C# code
table=DataGridView绑定数据表.Copy();


C# ……
[/Quote]

我这样写了DataTable table = sx.dt4.Copy(); dt4是datagridview的数据源。还是原来的错。
lpt1122 2010-07-06
  • 打赏
  • 举报
回复
怎么写啊。还是不行
lpt1122 2010-07-06
  • 打赏
  • 举报
回复
不懂。555555555
wuyq11 2010-07-06
  • 打赏
  • 举报
回复
DataTable dt2 = dt.Clone();

dt2.Rows.Add(dt.Rows[i].ItemArray);
捷哥1999 2010-07-06
  • 打赏
  • 举报
回复
你这样肯定不行了,你必须这样!

提示信息很明确了,(dr.DataBoundItem as DataRowView).Row是引用类型,你直接赋值给row,当然导致了两个引用都指向同一个对象,而原先的行已经属于某个表了,所以必须拷贝所有的列数据,你可以在拷贝前,保证两个表的结构是一样的!
table=DataGridView绑定数据表.Copy();


DataRow row = table.NewRow();
row = (dr.DataBoundItem as DataRowView).Row;
table.Rows.Add(row);

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧