BeginEdit Méthode
Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

DataRow.BeginEdit, méthode ()

 

Commence une opération de modification d'un objet DataRow.

Espace de noms:   System.Data
Assembly:  System.Data (dans System.Data.dll)

public void BeginEdit()

Exception Condition
InRowChangingEventException

La méthode a été appelée au sein de l'événement RowChanging.

DeletedRowInaccessibleException

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

Utilisez la méthode BeginEdit pour insérer DataRow en mode é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, pour garantir que la valeur de la colonne de montant total est égale aux valeurs des colonnes de débit et de crédit sur une ligne, vous pouvez mettre chaque ligne en mode édition pour suspendre la validation des valeurs des lignes jusqu'à ce que l'utilisateur essaye de les valider.

La méthode BeginEdit est appelée implicitement lorsque l'utilisateur modifie la valeur d'un contrôle lié aux données. La méthode EndEdit est appelée implicitement lorsque vous appelez la méthode AcceptChanges pour l'objet DataTable.En mode édition, DataRow stocke des représentations de la valeur d'origine et de la nouvelle valeur proposée.Par conséquent, tant que vous n'appelez pas la méthode EndEdit, vous pouvez récupérer la version d'origine ou la version proposée en passant DataRowVersion.Original ou DataRowVersion.Proposed comme paramètre version de la propriété Item.Vous pouvez également annuler des modifications à ce stade en appelant la méthode CancelEdit.

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

System_CAPS_noteRemarque

La méthode BeginEdit interrompt temporairement les événements RowChanging, contrairement à l'opération delete qui ne le fait pas.

L'exemple crée un DataTable simple avec un DataColumn et cinq objets DataRow, ainsi que UniqueConstraint.Un gestionnaire d'événements RowChanged est également ajouté pour détecter toute modification de la valeur de la ligne.Lorsque vous avez appelé BeginEdit sur les lignes existantes, la contrainte ainsi que l'événement sont temporairement désactivés et les valeurs d'origine et proposée s'affichent. BeginEdit est à nouveau appelé pour affecter à deux lignes la même valeur.Lorsque EndEdit est appelé, UniqueConstraint est appliqué sur les 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]);
}

.NET Framework
Disponible depuis 1.1
Retour au début
Afficher:
© 2016 Microsoft