恢复旧的DataRow并设置原始版本值?

时间:2012-02-02 08:29:29

标签: datatable dataset

我需要克隆整个数据行当前/原始值,以备用。 如果我使用:

 private static DataRow CopyRow(DataRow dr)
         {
             DataRow drCopy = dr.Table.NewRow();
             DataRow drCopyOrig = dr.Table.NewRow();
             for (int i = 0; i < dr.Table.Columns.Count; i++)
             {
                 drCopy[i] = dr[i];
                 drCopyOrig[i] = dr[i,DataRowVersion.Original];
             }
             return drCopy;
         }

恢复时,我的原始值(dr [“col”,DataRowVersion.Original])会丢失,因为我无法为此表达式设置值。

1 个答案:

答案 0 :(得分:1)

在访问DataRow的DataRowVersion属性之前,请务必在DataSet或DataTable上调用AcceptChanges

摘自Row States and Row Versions

  

在DataSet,DataTable或DataRow上调用AcceptChanges时   删除行状态为Deleted的行。剩下的行是   给定行状态为Unchanged,以及Original行中的值   版本将被当前行版本值覆盖。什么时候   调用RejectChanges,行状态为Added的所有行都是   除去。其余行的行状态为Unchanged,和   当前行版本中的值将被覆盖   原始行版本值。