我有两个数据表
DataTable dt = new DataTable();
DataTable dt1 = new DataTable();
然后我将数据添加到" dt" datatable并将其设置为datagridview的源
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("name", typeof(string));
dt.Rows.Add(1, "One");
dt.Rows.Add(2, "Two");
dt.Rows.Add(3, "Three");
dataGridView1.DataSource =dt;
然后我将dt复制到dt1并清除dt中的数据
dt1 = dt.Copy();
dt.Clear();
现在在将dt1复制回dt之后,datagrid丢失了源:
dt = dt1.Copy();
数据网格现在没有显示任何内容,即使dt有数据,但是当再次将datagrid重新分配给dt时数据显示
dataGridView1.DataSource =dt;
我的问题是为什么datagrid在复制后丢失了源码,有没有办法从数据表中复制而不重新分配数据源
答案 0 :(得分:0)
我想这是因为DataTable.Copy确实返回了DataTable的 new 实例。
所以当你这样做时:" dt = dt1.Copy()"你实际上用新的参考替换了dt。
但是,您的数据网格仍使用" dt"的旧引用(它们现在是完全不同的对象,其中"旧的"一个刚被你清除......因此没有数据)。
更新("有方法"评论):是的。 MSDN是你的朋友。也不知道我的头顶。 DataTable.Merge做你想要的(可能 - 因为我们不知道你想要什么)