DataRowView Clase

Definición

Representa una vista personalizada de un elemento DataRow.

public ref class DataRowView : System::ComponentModel::ICustomTypeDescriptor, System::ComponentModel::IDataErrorInfo, System::ComponentModel::IEditableObject, System::ComponentModel::INotifyPropertyChanged
public ref class DataRowView : System::ComponentModel::ICustomTypeDescriptor, System::ComponentModel::IDataErrorInfo, System::ComponentModel::IEditableObject
public class DataRowView : System.ComponentModel.ICustomTypeDescriptor, System.ComponentModel.IDataErrorInfo, System.ComponentModel.IEditableObject, System.ComponentModel.INotifyPropertyChanged
public class DataRowView : System.ComponentModel.ICustomTypeDescriptor, System.ComponentModel.IDataErrorInfo, System.ComponentModel.IEditableObject
type DataRowView = class
    interface ICustomTypeDescriptor
    interface IDataErrorInfo
    interface IEditableObject
    interface INotifyPropertyChanged
type DataRowView = class
    interface ICustomTypeDescriptor
    interface IEditableObject
    interface IDataErrorInfo
type DataRowView = class
    interface ICustomTypeDescriptor
    interface IEditableObject
    interface IDataErrorInfo
    interface INotifyPropertyChanged
Public Class DataRowView
Implements ICustomTypeDescriptor, IDataErrorInfo, IEditableObject, INotifyPropertyChanged
Public Class DataRowView
Implements ICustomTypeDescriptor, IDataErrorInfo, IEditableObject
Herencia
DataRowView
Implementaciones

Ejemplos

En el ejemplo siguiente se usa la RowVersion propiedad para determinar el estado de una fila en .DataRowView (Vea RowFilter otro ejemplo con DataRowView).

private static void DemonstrateRowVersion()
{
    // Create a DataTable with one column.
    DataTable table = new DataTable("Table");
    DataColumn column = new DataColumn("Column");
    table.Columns.Add(column);

    // Add ten rows.
    DataRow row;
    for (int i = 0; i < 10; i++)
    {
        row = table.NewRow();
        row["Column"] = "item " + i;
        table.Rows.Add(row);
    }

    table.AcceptChanges();
    // Create a DataView with the table.
    DataView view = new DataView(table);

    // Change one row's value:
    table.Rows[1]["Column"] = "Hello";

    // Add one row:
    row = table.NewRow();
    row["Column"] = "World";
    table.Rows.Add(row);

    // Set the RowStateFilter to display only added
    // and modified rows.
    view.RowStateFilter = DataViewRowState.Added |
        DataViewRowState.ModifiedCurrent;

    // Print those rows. Output includes "Hello" and "World".
    PrintView(view, "ModifiedCurrent and Added");

    // Set filter to display only originals of modified rows.
    view.RowStateFilter = DataViewRowState.ModifiedOriginal;
    PrintView(view, "ModifiedOriginal");

    // Delete three rows.
    table.Rows[1].Delete();
    table.Rows[2].Delete();
    table.Rows[3].Delete();

    // Set the RowStateFilter to display only deleted rows.
    view.RowStateFilter = DataViewRowState.Deleted;
    PrintView(view, "Deleted");

    // Set filter to display only current rows.
    view.RowStateFilter = DataViewRowState.CurrentRows;
    PrintView(view, "Current");

    // Set filter to display only unchanged rows.
    view.RowStateFilter = DataViewRowState.Unchanged;
    PrintView(view, "Unchanged");

    // Set filter to display only original rows.
    // Current values of unmodified rows are also returned.
    view.RowStateFilter = DataViewRowState.OriginalRows;
    PrintView(view, "OriginalRows");
}

private static void PrintView(DataView view, string label)
{
    Console.WriteLine("\n" + label);
    for (int i = 0; i < view.Count; i++)
    {
        Console.WriteLine(view[i]["Column"]);
        Console.WriteLine("DataViewRow.RowVersion: {0}",
            view[i].RowVersion);
    }
}
Private Sub DemonstrateRowVersion()
    Dim i As Integer
    ' Create a DataTable with one column.
    Dim table As New DataTable("Table")
    Dim column As New DataColumn("Column")
    table.Columns.Add(column)

    ' Add ten rows.
    Dim row As DataRow
    For i = 0 To 9
        row = table.NewRow()
        row("Column") = "item " + i.ToString()
        table.Rows.Add(row)
    Next i
    table.AcceptChanges()

    ' Create a DataView with the table.
    Dim view As New DataView(table)

    ' Change one row's value:
    table.Rows(1)("Column") = "Hello"

    ' Add one row:
    row = table.NewRow()
    row("Column") = "World"
    table.Rows.Add(row)

    ' Set the RowStateFilter to display only added and modified rows.
    view.RowStateFilter = _
       DataViewRowState.Added Or DataViewRowState.ModifiedCurrent

    ' Print those rows. Output includes "Hello" and "World".
    PrintView(view, "ModifiedCurrent and Added")

    ' Set filter to display only originals of modified rows.
    view.RowStateFilter = DataViewRowState.ModifiedOriginal
    PrintView(view, "ModifiedOriginal")

    ' Delete three rows.
    table.Rows(1).Delete()
    table.Rows(2).Delete()
    table.Rows(3).Delete()

    ' Set the RowStateFilter to display only deleted rows.
    view.RowStateFilter = DataViewRowState.Deleted
    PrintView(view, "Deleted")

    ' Set filter to display only current rows.
    view.RowStateFilter = DataViewRowState.CurrentRows
    PrintView(view, "Current")

    ' Set filter to display only unchanged rows.
    view.RowStateFilter = DataViewRowState.Unchanged
    PrintView(view, "Unchanged")

    ' Set filter to display only original rows.
    ' Current values of unmodified rows are also returned.
    view.RowStateFilter = DataViewRowState.OriginalRows
    PrintView(view, "OriginalRows")
End Sub

Private Sub PrintView(ByVal view As DataView, ByVal label As String)
    Console.WriteLine(ControlChars.Cr + label)
    Dim i As Integer
    For i = 0 To view.Count - 1
        Console.WriteLine(view(i)("Column"))
        Console.WriteLine("DataRowView.RowVersion: {0}", _
            view(i).RowVersion)
    Next i
End Sub

Comentarios

Cada vez que se muestran los datos, como en un DataGrid control, solo se puede mostrar una versión de cada fila. La fila mostrada es .DataRowView

Un DataRowView puede tener uno de los cuatro estados de versión diferentes: Default, Original, Currenty Proposed.

Después de invocar BeginEdit en , DataRowcualquier valor editado se convierte en el Proposed valor . Hasta que se invoque CancelEdit o EndEdit , la fila tiene una Original versión y .Proposed Si CancelEdit se invoca, se descarta la versión propuesta y el valor se revierte a Original. Si EndEdit se invoca, ya DataRowView no tiene una Proposed versión; en su lugar, el valor propuesto se convierte en el valor actual. Los valores predeterminados solo están disponibles en las filas que tienen columnas con valores predeterminados definidos.

Propiedades

DataView

Obtiene el DataView al que pertenece esta fila.

IsEdit

Indica si la fila está en modo de edición.

IsNew

Indica si un DataRowView es nuevo.

Item[Int32]

Obtiene o establece el valor de una columna especificada.

Item[String]

Obtiene o establece el valor de una columna especificada.

Row

Obtiene el DataRow que se está viendo.

RowVersion

Obtiene la descripción de la versión actual de DataRow.

Métodos

BeginEdit()

Inicia un procedimiento de edición.

CancelEdit()

Cancela un procedimiento de edición.

CreateChildView(DataRelation)

Devuelve un DataView correspondiente al DataTable secundario con el DataRelation secundario especificado.

CreateChildView(DataRelation, Boolean)

Devuelve un elemento DataView correspondiente al elemento DataTable secundario con el DataRelation especificado y el elemento primario.

CreateChildView(String)

Devuelve un DataView correspondiente al DataTable secundario con el DataRelation secundario especificado.

CreateChildView(String, Boolean)

Devuelve un DataView correspondiente al DataTable secundario con el nombre DataRelation especificado y el primario.

Delete()

Elimina una fila.

EndEdit()

Confirma los cambios en el DataRow subyacente y finaliza la sesión de edición que se inició con BeginEdit(). Use CancelEdit() para descartar los cambios realizados en DataRow.

Equals(Object)

Obtiene un valor que indica si la clase DataRowView actual es idéntica al objeto especificado.

GetHashCode()

Devuelve el código hash del objeto DataRow.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Eventos

PropertyChanged

Evento que se provoca cuando se cambia una propiedad de DataRowView.

Implementaciones de interfaz explícitas

ICustomTypeDescriptor.GetAttributes()

Devuelve una colección de atributos personalizados para esta instancia de un componente.

ICustomTypeDescriptor.GetClassName()

Devuelve el nombre de clase de esta instancia de un componente.

ICustomTypeDescriptor.GetComponentName()

Devuelve los eventos para esta instancia de un componente.

ICustomTypeDescriptor.GetConverter()

Devuelve un convertidor de tipos para instancia de un componente.

ICustomTypeDescriptor.GetDefaultEvent()

Devuelve el evento predeterminado para esta instancia de un componente.

ICustomTypeDescriptor.GetDefaultProperty()

Devuelve la propiedad predeterminada para esta instancia de un componente.

ICustomTypeDescriptor.GetEditor(Type)

Devuelve un editor del tipo especificado para esta instancia de un componente.

ICustomTypeDescriptor.GetEvents()

Devuelve los eventos para esta instancia de un componente.

ICustomTypeDescriptor.GetEvents(Attribute[])

Devuelve los eventos para esta instancia de un componente con los atributos especificados.

ICustomTypeDescriptor.GetProperties()

Devuelve las propiedades para esta instancia de un componente.

ICustomTypeDescriptor.GetProperties(Attribute[])

Devuelve las propiedades para esta instancia de un componente con los atributos especificados.

ICustomTypeDescriptor.GetPropertyOwner(PropertyDescriptor)

Devuelve un objeto que contiene la propiedad que describe el descriptor de propiedades especificado.

IDataErrorInfo.Error

Obtiene un mensaje en el que se describen los errores de validación del objeto.

IDataErrorInfo.Item[String]

Obtiene el mensaje de error correspondiente a la propiedad con el nombre especificado.

Se aplica a

Seguridad para subprocesos

Este tipo es seguro para las operaciones de lectura multiproceso. Debe sincronizar las operaciones de escritura.

Consulte también