DataRow.BeginEdit Méthode

Définition

Démarre une opération de modification sur un DataRow objet.

public:
 void BeginEdit();
public void BeginEdit();
member this.BeginEdit : unit -> unit
Public Sub BeginEdit ()

Exceptions

La méthode a été appelée à l’intérieur de l’événement RowChanging .

La méthode a été appelée sur une ligne supprimée.

Exemples

L’exemple crée un simple DataTable avec un DataColumn et cinq DataRow objets, et un UniqueConstraint. Un gestionnaire d’événements RowChanged est également ajouté pour surveiller la modification de la valeur de la ligne. Après l’appel BeginEdit sur les lignes existantes, la contrainte et l’événement sont temporairement désactivés et les valeurs d’origine et proposées sont imprimées. La BeginEdit valeur est de nouveau appelée pour définir deux lignes sur la même valeur. Quand EndEdit elle est appelée, elle UniqueConstraint est appliquée aux valeurs identiques.

private void DemonstrateRowBeginEdit()
{
    DataTable table = new DataTable("table1");
    DataColumn column = new
        DataColumn("col1",Type.GetType("System.Int32"));
    table.RowChanged+=new
        DataRowChangeEventHandler(Row_Changed);
    table.Columns.Add(column);

    // Add a UniqueConstraint to the table.
    table.Constraints.Add(new UniqueConstraint(column));

    // Add five rows.
    DataRow newRow;

    for(int i = 0;i<5; i++)
    {
        // RowChanged event will occur for every addition.
        newRow= table.NewRow();
        newRow[0]= i;
        table.Rows.Add(newRow);
    }
    // AcceptChanges.
    table.AcceptChanges();

    // Invoke BeginEdit on each.
    Console.WriteLine(
        "\n Begin Edit and print original and proposed values \n");
    foreach(DataRow row in table.Rows)
    {

        row.BeginEdit();
        row[0]=(int) row[0]+10;
        Console.Write("\table Original \table" +
            row[0, DataRowVersion.Original]);
        Console.Write("\table Proposed \table" +
            row[0,DataRowVersion.Proposed] + "\n");
    }
    Console.WriteLine("\n");
    // Accept changes
    table.AcceptChanges();
    // Change two rows to identical values after invoking BeginEdit.
    table.Rows[0].BeginEdit();
    table.Rows[1].BeginEdit();
    table.Rows[0][0]= 100;
    table.Rows[1][0]=100;
    try
    {
        /* Now invoke EndEdit. This will cause the UniqueConstraint
           to be enforced.*/
        table.Rows[0].EndEdit();
        table.Rows[1].EndEdit();
    }
    catch(Exception e)
    {
        // Process exception and return.
        Console.WriteLine("Exception of type {0} occurred.",
            e.GetType());
    }
}

private void Row_Changed(object sender,
    System.Data.DataRowChangeEventArgs e)
{
    DataTable table = (DataTable)  sender;
    Console.WriteLine("RowChanged " + e.Action.ToString()
        + "\table" + e.Row.ItemArray[0]);
}
Private Sub DemonstrateRowBeginEdit()
    Dim table As New DataTable("table1")
    Dim column As New DataColumn("col1", Type.GetType("System.Int32"))
    AddHandler table.RowChanged, AddressOf Row_Changed
    table.Columns.Add(column)

    ' Add a UniqueConstraint to the table.
    table.Constraints.Add(New UniqueConstraint(column))

    ' Add five rows.
    Dim newRow As DataRow
       
    Dim i As Integer
    For i = 0 To 4
        ' RowChanged event will occur for every addition.
        newRow = table.NewRow()
        newRow(0) = i
        table.Rows.Add(newRow)
    Next i

    ' AcceptChanges.
    table.AcceptChanges()

    ' Invoke BeginEdit on each.
    Console.WriteLine(ControlChars.Cr _
       & " Begin Edit and print original and proposed values " _
       & ControlChars.Cr)
    Dim row As DataRow
    For Each row In  table.Rows           
        row.BeginEdit()
        row(0) = CInt(row(0)) & 10
        Console.Write(ControlChars.Tab & " Original " & ControlChars.Tab _
           & row(0, DataRowVersion.Original).ToString())
        Console.Write(ControlChars.Tab & " Proposed " & ControlChars.Tab _
           & row(0, DataRowVersion.Proposed).ToString() & ControlChars.Cr)
    Next row
    Console.WriteLine(ControlChars.Cr)

    ' Accept changes
    table.AcceptChanges()

    ' Change two rows to identical values after invoking BeginEdit.
    table.Rows(0).BeginEdit()
    table.Rows(1).BeginEdit()
    table.Rows(0)(0) = 100
    table.Rows(1)(0) = 100
    Try
        ' Now invoke EndEdit. This will cause the UniqueConstraint
        ' to be enforced.
        table.Rows(0).EndEdit()
        table.Rows(1).EndEdit()
    Catch e As Exception
    ' Process exception and return.
        Console.WriteLine("Exception of type {0} occurred.", _
           e.GetType().ToString())
    End Try
End Sub

Private Sub Row_Changed _
(sender As Object, e As System.Data.DataRowChangeEventArgs)
    Dim table As DataTable = CType(sender, DataTable)
    Console.WriteLine("RowChanged " & e.Action.ToString() _
       & ControlChars.Tab & e.Row.ItemArray(0).ToString())
End Sub

Remarques

Utilisez la BeginEdit méthode pour placer un DataRow mode d’édition. Dans ce mode, les événements sont temporairement suspendus, ce qui permet à l’utilisateur d’apporter des modifications à plusieurs lignes sans déclencher de règles de validation. Par exemple, si vous devez vous assurer que la valeur de la colonne pour un montant total est égale aux valeurs des colonnes de débit et de crédit dans une ligne, vous pouvez placer chaque ligne en mode d’édition pour suspendre la validation des valeurs de ligne jusqu’à ce que l’utilisateur tente de valider les valeurs.

La BeginEdit méthode est appelée implicitement lorsque l’utilisateur modifie la valeur d’un contrôle lié aux données ; la EndEdit méthode est appelée implicitement lorsque vous appelez la AcceptChanges méthode pour l’objet DataTable . Dans ce mode d’édition, les DataRow représentations des valeurs d’origine et de nouvelles valeurs proposées sont stockées. Par conséquent, tant que la EndEdit méthode n’a pas été appelée, vous pouvez récupérer la version d’origine ou proposée en passant ou DataRowVersion.OriginalDataRowVersion.Proposed pour le version paramètre de la Item[] propriété. Vous pouvez également annuler toutes les modifications à ce stade en appelant la CancelEdit méthode.

Pour voir si la ligne contient une valeur d’origine ou proposée, appelez la HasVersion méthode.

Note

La BeginEdit méthode suspend temporairement les RowChanging événements, mais l’opération ne le delete fait pas.

S’applique à

Voir aussi