datatable.copy之后,datagrid与DataSource失去了连接

时间:2018-04-24 05:02:38

标签: c# datagridview datatable

我有两个数据表

 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在复制后丢失了源码,有没有办法从数据表中复制而不重新分配数据源

1 个答案:

答案 0 :(得分:0)

我想这是因为DataTable.Copy确实返回了DataTable的 new 实例。

所以当你这样做时:" dt = dt1.Copy()"你实际上用新的参考替换了dt。

但是,您的数据网格仍使用" dt"的旧引用(它们现在是完全不同的对象,其中"旧的"一个刚被你清除......因此没有数据)。

更新("有方法"评论):是的。 MSDN是你的朋友。也不知道我的头顶。 DataTable.Merge做你想要的(可能 - 因为我们不知道你想要什么)