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

为何这么简单的操作都会出错
有两个datagridview,想把其中一个当前选项的行,添加到另一个datagridview中
int   i   =   dataGridView2.CurrentRow.Index;
DataRow   dr   =   dt.NewRow();
string   userid   =   dataGridView2.CurrentRow.Cells[0].Value.ToString();
string   name   =   dataGridView2.CurrentRow.Cells[1].Value.ToString();
dr[ "UserID "]   =   userid;
drr[ "Name "]   =   name;
dt2.Rows.Add(dr);//这里报错,该行已属于另一个表
dataGridView1.DataSource   =   dt2;
请给分求助!!

------解决方案--------------------
当然会出错了,错误不是很明显吗,它是dt的行,怎么能再往dt2里面添加呢?
那你为什么步DataRow dr = dt2.NewRow()
这样就不会错了啊,^_^

------解决方案--------------------
新建一个dataTable dt3,一个CurrencyManager cmOrders;

this.cmOrders = (CurrencyManager)BindingContext[this.dataSet11,dt2];//设置CurrencyManager需要管理的列表
dt3 = dt2.clone;//复制dt2的架构
dataGridView2.DataSource = dt3;//绑定数据
dt3.ImportRow(cmOrders.Position);//导入当前选定行

------解决方案--------------------
要往dt2里加行, 必须要用dt2.newrow() 创建, 把第一个行的各列值赋过来给这个行, 就可以插入了.
------解决方案--------------------
DataRow dr = dt.NewRow();
应写成 DataRow dr = dt2.NewRow(); 就可以了