2012-02-02 16 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 [ "COL"、DataRowVersion.Original])は、失われます。

答えて

1

DataRowのDataRowVersionプロパティにアクセスする前に、必ずAcceptChangesをDataSetまたはDataTableに呼び出してください。

Row States and Row Versionsから抜粋:

れるAcceptChangesが削除の行状態に全て 行が削除され、データセット、データテーブル、またはのDataRowで呼び出された場合。残りの行は であり、行状態は変更されず、元の行 の値は現在の行のバージョン値で上書きされます。 RejectChangesが呼び出されると、追加された行状態のすべての行が削除されます。 残りの行には未変更の行状態が与えられ、 の現在行バージョンの値は の元の行バージョン値で上書きされます。

関連する問題