Прочитать на английском

Поделиться через


DataRow.BeginEdit Метод

Определение

Начинает операцию изменения объекта DataRow.

public void BeginEdit ();

Исключения

Метод был вызван внутри события RowChanging.

Метод был вызван в удаленную строку.

Примеры

В примере создается простой DataTable объект с одним DataColumn и пятью DataRow объектами и .UniqueConstraint Обработчик RowChanged событий также добавляется для отслеживания изменения значения строки. После вызова BeginEdit в существующих строках ограничение и событие временно отключаются, а исходные и предлагаемые значения печатаются. Снова BeginEdit вызывается, чтобы задать для двух строк одно и то же значение. При EndEdit вызове UniqueConstraint применяется к идентичным значениям.

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]);
}

Комментарии

Используйте метод , BeginEdit чтобы перейти в DataRow режим редактирования. В этом режиме события временно приостанавливаются, позволяя пользователю вносить изменения в несколько строк без активации правил проверки. Например, если необходимо убедиться, что значение столбца для общей суммы равно значениям столбцов дебета и кредита в строке, можно поместить каждую строку в режим редактирования, чтобы приостановить проверку значений строк до тех пор, пока пользователь не попытается зафиксировать значения.

Метод BeginEdit вызывается неявно, когда пользователь изменяет значение элемента управления с привязкой к данным; EndEdit метод вызывается неявно при вызове AcceptChanges метода для DataTable объекта . В этом режиме редактирования хранятся DataRow представления исходных и новых предлагаемых значений. Таким образом, до тех пор, пока EndEdit метод не был вызван, можно получить исходную или предлагаемую версию, передав DataRowVersion.Original параметр или DataRowVersion.Proposed для version параметра Item[] свойства . На этом этапе можно также отменить любые изменения, вызвав CancelEdit метод .

Чтобы узнать, содержит ли строка исходное или предлагаемое HasVersion значение, вызовите метод .

Примечание

Метод BeginEdit временно приостанавливает RowChanging события, а delete операция — нет.

Применяется к

Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

См. также раздел