方法 : 特定のバージョンの DataRow を取得する
更新 : 2007 年 11 月
データ行を変更すると、データセットにその行の元のバージョン (Original) と新しいバージョン (Current) が保存されます。たとえば、AcceptChanges メソッドを呼び出す前にレコードの別のバージョン (DataRowVersion 列挙定数で定義) にアクセスし、そのバージョンに応じて変更を処理できます。
メモ : |
---|
別のバージョンの行が存在するのは、その行を編集してから AcceptChanges メソッドを呼び出すまでの間です。AcceptChanges メソッドの呼び出し後は、現在のバージョンと元のバージョンが同じになります。 |
DataRowVersion 値を列インデックス (文字列である列名) と共に渡すと、その列の特定の行バージョンから値が返されます。変更された列は ColumnChanging イベントおよび ColumnChanged イベント中に識別されるため、検証の目的で行バージョンの違いを簡単に調べることができます。ただし、一時的に制約を中断しているときはこれらのイベントは発生しないため、変更された列をプログラムで識別する必要があります。Columns コレクションを反復処理し、異なる DataRowVersion 値を比較することにより変更された列を識別できます。
DataRow の元のバージョンへのアクセス
レコードの元のバージョンを取得するには
取得する行の DataRowVersion を渡して列の値にアクセスします。
DataRowVersion 値を使って、DataRow の CompanyName フィールドの元の値を取得する例を次に示します。
Dim originalCompanyName As String originalCompanyName = NorthwindDataSet1.Customers(0) _ ("CompanyName", DataRowVersion.Original).ToString()
string originalCompanyName; originalCompanyName = northwindDataSet1.Customers[0] ["CompanyName", DataRowVersion.Original].ToString();
DataRow の現在のバージョンへのアクセス
レコードの現在のバージョンを取得するには
列の値にアクセスし、取得する行のバージョンを示すインデックスに対するパラメータを追加します。
DataRowVersion 値を使って、DataRow の CompanyName フィールドの現在の値を取得する例を次に示します。
Dim currentCompanyName As String currentCompanyName = NorthwindDataSet1.Customers(0) _ ("CompanyName", DataRowVersion.Current).ToString()
string currentCompanyName; currentCompanyName = northwindDataSet1.Customers[0] ["CompanyName", DataRowVersion.Current].ToString();