DataRowVersion 列挙型

定義

DataRow のバージョンを記述します。

public enum class DataRowVersion
public enum DataRowVersion
type DataRowVersion = 
Public Enum DataRowVersion
継承
DataRowVersion

フィールド

Current 512

行には、現在の値が含まれています。

Default 1536

DataRowState の既定のバージョン。 DataRowState の値が AddedModified、または Deleted の場合、既定バージョンは Current です。 DetachedDataRowState 値の場合、バージョンは Proposed です。

Original 256

行には、元の値が含まれています。

Proposed 1024

行には、提案値が含まれています。

次の例では、 メソッドをDataRowVersionDataRow呼び出す前に の をAcceptChanges確認します。

private static void CheckVersionBeforeAccept()
{
    //Run a function to create a DataTable with one column.
    DataTable dataTable = MakeTable();

    DataRow dataRow = dataTable.NewRow();
    dataRow["FirstName"] = "Marcy";
    dataTable.Rows.Add(dataRow);

    dataRow.BeginEdit();
    // Edit data but keep the same value.
    dataRow[0] = "Marcy";
    // Uncomment the following line to add a new value.
    // dataRow(0) = "Richard"
    Console.WriteLine(string.Format("FirstName {0}", dataRow[0]));

    // Compare the proposed version with the current.
    if (dataRow.HasVersion(DataRowVersion.Proposed)) {
        if (object.ReferenceEquals(dataRow[0, DataRowVersion.Current], dataRow[0, DataRowVersion.Proposed])) {
            Console.WriteLine("The original and the proposed are the same.");
            dataRow.CancelEdit();
        } else {
            dataRow.AcceptChanges();
            Console.WriteLine("The original and the proposed are different.");
        }
    }
}

private static DataTable MakeTable()
{
    // Make a simple table with one column.
    DataTable dt = new DataTable("dataTable");
    DataColumn firstName = new DataColumn("FirstName", Type.GetType("System.String"));
    dt.Columns.Add(firstName);
    return dt;
}
Private Sub CheckVersionBeforeAccept()
    'Run a function to create a DataTable with one column.
    Dim dataTable As DataTable = MakeTable()

    Dim dataRow As DataRow = dataTable.NewRow()
    dataRow("FirstName") = "Marcy"
    dataTable.Rows.Add(dataRow)

    dataRow.BeginEdit()
    ' Edit data but keep the same value.
    dataRow(0) = "Marcy"
    ' Uncomment the following line to add a new value.
    ' dataRow(0) = "Richard"
    Console.WriteLine(String.Format("FirstName {0}", dataRow(0)))

    ' Compare the proposed version with the current.
    If dataRow.HasVersion(DataRowVersion.Proposed) Then
        If dataRow(0, DataRowVersion.Current) Is dataRow(0, DataRowVersion.Proposed) Then
            Console.WriteLine("The original and the proposed are the same.")
            dataRow.CancelEdit()
        Else
            dataRow.AcceptChanges()
            Console.WriteLine("The original and the proposed are different.")
        End If
    End If
End Sub

Private Function MakeTable() As DataTable
    ' Make a simple table with one column.
    Dim dt As New DataTable("dataTable")
    Dim firstName As New DataColumn("FirstName", _
       Type.GetType("System.String"))
    dt.Columns.Add(firstName)
    Return dt
End Function

注釈

値はDataRowVersion、 オブジェクトの using または GetChildRowsDataRow で見つかった値をDataRow取得するときに使用Item[]されます。

DataRowVersion 、存在する のバージョンを DataRow 通知します。 バージョンは、次の状況で変更されます。

  • オブジェクトの メソッドをDataRow呼び出した後、値を変更すると、 と Proposed の値がCurrent使用可能BeginEditになります。

  • オブジェクトCancelEditの メソッドをDataRow呼び出すと、Proposed値が削除されます。

  • オブジェクトの EndEdit メソッドをDataRow呼び出すと、Proposed 値がCurrent値になります。

  • オブジェクトの メソッドをDataRow呼び出すと、値は Original 値とCurrent同じAcceptChangesになります。

  • オブジェクトの メソッドをDataTable呼び出すと、値は Original 値とCurrent同じAcceptChangesになります。

  • オブジェクトの メソッドをDataRow呼び出すと、Proposed値は破棄され、バージョンは になりますCurrentRejectChanges

適用対象

こちらもご覧ください