Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original.
Traducción
Original
Este tema aún no ha recibido ninguna valoración - Valorar este tema

DataRow.BeginEdit (Método)

Inicia una operación de edición en un objeto DataRow.

Espacio de nombres:  System.Data
Ensamblado:  System.Data (en System.Data.dll)
public void BeginEdit()
Excepción Condición
InRowChangingEventException

Se ha llamado al método dentro del evento RowChanging.

DeletedRowInaccessibleException

Se ha llamado al método en una fila eliminada.

Utilice el método BeginEdit para colocar un DataRow en modo de edición. En este modo, los eventos se suspenden temporalmente permitiendo que el usuario realice cambios en más de una fila sin desencadenar reglas de validación. Por ejemplo, si necesita garantizar que el valor de la columna de importe total coincide con los valores de las columnas de debe y haber de una fila, puede aplicar a cada una de las filas el modo de edición para suspender la evaluación de los valores de las filas hasta que el usuario intente confirmarlos.

Si el usuario cambia el valor de un control de datos enlazados, se llama implícitamente al método BeginEdit; cuando se invoca al método AcceptChanges para el objeto DataTable, se llama implícitamente al método EndEdit. Mientras se está en este modo de edición, el objeto DataRow almacena las representaciones de los valores originales y de los nuevos valores propuestos. Por tanto, mientras no se llame al método EndEdit, se puede recuperar la versión original o la propuesta pasando DataRowVersion.Original o DataRowVersion.Proposed al parámetro version de la propiedad Item. En este momento, también se puede cancelar cualquier edición si se invoca el método CancelEdit.

Para ver si la fila contiene un valor original o propuesto, llame al método HasVersion.

Nota Nota

El método BeginEdit suspende temporalmente los eventos RowChanging, pero la operación delete no.

En el ejemplo siguiente se crea un DataTable simple con un DataColumn, cinco objetos DataRow y un UniqueConstraint. También se agrega un controlador de eventos RowChanged para supervisar cuándo está cambiando el valor de una fila. Tras invocar el BeginEdit en las filas existentes, la restricción y el evento se deshabilitan temporalmente y se imprimen los valores originales y propuestos. Se invoca de nuevo el BeginEdit para establecer dos filas en el mismo valor. Cuando se llama a EndEdit, UniqueConstraint se impone en los valores idénticos.


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

Compatible con: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
¿Le ha resultado útil?
(Caracteres restantes: 1500)
Contenido de la comunidad Agregar