【发布时间】:2015-03-24 09:36:39
【问题描述】:
我需要将数据表(在数据集中)复制到独立的数据表中。我的目的是保存数据表的原始独立副本,以便在我想要的任何时候将其恢复到数据集。
我使用了这个代码:copiedDataTable = frm.DataSet.Tables["myoriginaldatatable"].Copy();,但它的工作原理与 Clone() 命令一样,并创建 originaldatatable 的结构,但行是空的,而 originaldatatable 的行在我跟踪时不是空的。
在另一次尝试中,我使用了以下代码:
copiedDataTable = frmMainForm.DataSet.Tables["originalDataTable"];
这个命令可以很好地复制原始数据表。但是当我从数据集中清除原始数据表以恢复复制的数据表时,复制的数据表也被清除并且行变为空。(通过此代码恢复:)
frmMainForm.DataSet.Tables["originalDataTable"].Clear();
frmMainForm.DataSet.Tables.Remove("originalDataTable");
frmMainForm.projectDataSet.Tables.Add(copiedDataTable);
如何制作独立副本?
【问题讨论】:
-
根据msdn "复制创建一个新的数据表,其结构和数据与原始数据表相同。要将结构复制到新的数据表,但不复制数据,请使用克隆。”
-
我也需要数据,但 copy() 命令不会将行数据复制到新表中。
-
尝试先调用
frmMainForm.DataSet.Tables["originalDataTable"].AcceptChanges()方法,然后复制表。如果是通过代码手动插入的行可能不被接受。 -
不要通过初始化直接恢复原表。 .net 是通过 HashCode 而不是通过变量名或其键来处理对象。因此,您应该在循环中一一更新行和单元格值,而不是整个数据表。