2012-02-02 54 views
1

爲了備份目的,我需要克隆整個數據行當前/原始值。 如果我使用:恢復舊的DataRow並設置原始版本值?

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 [「關口」,DataRowVersion.Original])都丟了,因爲我不能設置值這個表達式。

回答

1

確保訪問一個DataRow的的DataRowVersion屬性之前打電話給你的數據集AcceptChanges或數據表。

Row States and Row Versions摘錄:

當AcceptChanges的上調用數據集,數據表,或DataRow中,所有的行 與已刪除的行的狀態被去除。其餘的行 給出不變的行狀態,並在原始行 版本的值與當前行版本值覆蓋。當 RejectChanges被調用時,添加了一排狀態的所有行 刪除。其餘各行給出的不變的行狀態, 在當前行版本的值與 原始行版本值覆蓋。