Compartir a través de


DataView Clase

Definición

Representa una vista databindable, personalizada de un DataTable para ordenar, filtrar, buscar, editar y navegar. El DataView no almacena datos, sino que representa una vista conectada de su DataTablecorrespondiente. Los cambios en los datos del DataViewafectarán al DataTable. Los cambios realizados en los datos del DataTableafectarán a todos los DataViewasociados.

public ref class DataView : System::ComponentModel::MarshalByValueComponent, System::Collections::IList, System::ComponentModel::IBindingListView, System::ComponentModel::ISupportInitialize, System::ComponentModel::ISupportInitializeNotification, System::ComponentModel::ITypedList
public ref class DataView : System::ComponentModel::MarshalByValueComponent, System::Collections::IList, System::ComponentModel::IBindingList, System::ComponentModel::ISupportInitialize, System::ComponentModel::ITypedList
public ref class DataView : System::ComponentModel::MarshalByValueComponent, System::Collections::IList, System::ComponentModel::IBindingListView, System::ComponentModel::ISupportInitializeNotification, System::ComponentModel::ITypedList
public ref class DataView : System::ComponentModel::MarshalByValueComponent, System::ComponentModel::IBindingListView, System::ComponentModel::ISupportInitializeNotification, System::ComponentModel::ITypedList
public class DataView : System.ComponentModel.MarshalByValueComponent, System.Collections.IList, System.ComponentModel.IBindingListView, System.ComponentModel.ISupportInitialize, System.ComponentModel.ISupportInitializeNotification, System.ComponentModel.ITypedList
public class DataView : System.ComponentModel.MarshalByValueComponent, System.Collections.IList, System.ComponentModel.IBindingList, System.ComponentModel.ISupportInitialize, System.ComponentModel.ITypedList
public class DataView : System.ComponentModel.MarshalByValueComponent, System.Collections.IList, System.ComponentModel.IBindingListView, System.ComponentModel.ISupportInitializeNotification, System.ComponentModel.ITypedList
public class DataView : System.ComponentModel.MarshalByValueComponent, System.ComponentModel.IBindingListView, System.ComponentModel.ISupportInitializeNotification, System.ComponentModel.ITypedList
type DataView = class
    inherit MarshalByValueComponent
    interface ICollection
    interface IEnumerable
    interface IList
    interface IBindingList
    interface IBindingListView
    interface ISupportInitialize
    interface ISupportInitializeNotification
    interface ITypedList
type DataView = class
    inherit MarshalByValueComponent
    interface IBindingList
    interface IList
    interface ICollection
    interface IEnumerable
    interface ITypedList
    interface ISupportInitialize
type DataView = class
    inherit MarshalByValueComponent
    interface IBindingListView
    interface IBindingList
    interface IList
    interface ICollection
    interface IEnumerable
    interface ITypedList
    interface ISupportInitializeNotification
    interface ISupportInitialize
Public Class DataView
Inherits MarshalByValueComponent
Implements IBindingListView, IList, ISupportInitialize, ISupportInitializeNotification, ITypedList
Public Class DataView
Inherits MarshalByValueComponent
Implements IBindingList, IList, ISupportInitialize, ITypedList
Public Class DataView
Inherits MarshalByValueComponent
Implements IBindingListView, IList, ISupportInitializeNotification, ITypedList
Public Class DataView
Inherits MarshalByValueComponent
Implements IBindingListView, ISupportInitializeNotification, ITypedList
Herencia
Implementaciones

Ejemplos

En el ejemplo siguiente se crea un único DataTable con una columna y cinco filas. Se crean dos objetos DataView y el RowStateFilter se establece en cada uno para mostrar vistas diferentes de los datos de la tabla. A continuación, se imprimen los valores.

using System;
using System.Xml;
using System.Data;
using System.Data.Common;
using System.Windows.Forms;

public class Form1: Form
{
    protected DataSet DataSet1;
    protected DataGrid dataGrid1;

    private void DemonstrateDataView()
    {
        // Create one DataTable with one column.
        DataTable table = new DataTable("table");
        DataColumn colItem = new DataColumn("item",
            Type.GetType("System.String"));
        table.Columns.Add(colItem);

        // Add five items.
        DataRow NewRow;
        for(int i = 0; i <5; i++)
        {
            NewRow = table.NewRow();
            NewRow["item"] = "Item " + i;
            table.Rows.Add(NewRow);
        }
        // Change the values in the table.
        table.AcceptChanges();
        table.Rows[0]["item"]="cat";
        table.Rows[1]["item"] = "dog";

        // Create two DataView objects with the same table.
        DataView firstView = new DataView(table);
        DataView secondView = new DataView(table);

        // Print current table values.
        PrintTableOrView(table,"Current Values in Table");

        // Set first DataView to show only modified
        // versions of original rows.
        firstView.RowStateFilter=DataViewRowState.ModifiedOriginal;

        // Print values.
        PrintTableOrView(firstView,"First DataView: ModifiedOriginal");

        // Add one New row to the second view.
        DataRowView rowView;
        rowView=secondView.AddNew();
        rowView["item"] = "fish";

        // Set second DataView to show modified versions of
        // current rows, or New rows.
        secondView.RowStateFilter=DataViewRowState.ModifiedCurrent
            | DataViewRowState.Added;
        // Print modified and Added rows.
        PrintTableOrView(secondView,
            "Second DataView: ModifiedCurrent | Added");
    }

    private void PrintTableOrView(DataTable table, string label)
    {
        // This function prints values in the table or DataView.
        Console.WriteLine("\n" + label);
        for(int i = 0; i<table.Rows.Count;i++)
        {
            Console.WriteLine(table.Rows[i]["item"]);
        }
        Console.WriteLine();
    }

    private void PrintTableOrView(DataView view, string label)
    {

        // This overload prints values in the table or DataView.
        Console.WriteLine("\n" + label);
        for(int i = 0; i<view.Count;i++)
        {
            Console.WriteLine(view[i]["item"]);
        }
        Console.WriteLine();
    }
}
Private Sub DemonstrateDataView()
    ' Create one DataTable with one column.
    Dim table As New DataTable("table")
    Dim colItem As New DataColumn("item", _
        Type.GetType("System.String"))
    table.Columns.Add(colItem)

    ' Add five items.
    Dim NewRow As DataRow
    Dim i As Integer
    For i = 0 To 4
    
    NewRow = table.NewRow()
    NewRow("item") = "Item " & i
    table.Rows.Add(NewRow)
    Next
    table.AcceptChanges()

    ' Create two DataView objects with the same table.
    Dim firstView As New DataView(table)
    Dim secondView As New DataView(table)
    
    ' Change the values in the table.
    table.Rows(0)("item") = "cat"
    table.Rows(1)("item") = "dog"
    
    ' Print current table values.
    PrintTableOrView(table, "Current Values in Table")
        
    ' Set first DataView to show only modified versions of original rows.
    firstView.RowStateFilter = DataViewRowState.ModifiedOriginal

    ' Print values.    
    PrintTableOrView(firstView, "First DataView: ModifiedOriginal")

    ' Add one New row to the second view.
    Dim rowView As DataRowView
    rowView = secondView.AddNew()
    rowView("item") = "fish"
    ' Set second DataView to show modified versions of 
    ' current rows, or New rows.
    secondView.RowStateFilter = DataViewRowState.ModifiedCurrent _
        Or DataViewRowState.Added
    ' Print modified and Added rows.
    PrintTableOrView(secondView, _
        "Second DataView: ModifiedCurrent or Added")
End Sub
    
Overloads Private Sub PrintTableOrView( _
    ByVal view As DataView, ByVal label As String)
    Console.WriteLine(label)
    Dim i As Integer
    For i = 0 To view.count - 1
    
    Console.WriteLine(view(i)("item"))
    Next
    Console.WriteLine()
End Sub
    
Overloads Private Sub PrintTableOrView( _
    ByVal table As DataTable, ByVal label As String)
    Console.WriteLine(label)
    Dim i As Integer
    For i = 0 To table.Rows.Count - 1
    Console.WriteLine(table.Rows(i)("item"))
    Next
    Console.WriteLine()
End Sub

En el ejemplo siguiente se crea un DataView de pedidos en línea ordenados por total debido a una consulta LINQ to DataSet:

DataTable orders = dataSet.Tables["SalesOrderHeader"];

EnumerableRowCollection<DataRow> query =
    from order in orders.AsEnumerable()
    where order.Field<bool>("OnlineOrderFlag") == true
    orderby order.Field<decimal>("TotalDue")
    select order;

DataView view = query.AsDataView();

bindingSource1.DataSource = view;
Dim orders As DataTable = dataSet.Tables("SalesOrderHeader")

Dim query = _
    From order In orders.AsEnumerable() _
    Where order.Field(Of Boolean)("OnlineOrderFlag") = True _
    Order By order.Field(Of Decimal)("TotalDue") _
    Select order

Dim view As DataView = query.AsDataView()
bindingSource1.DataSource = view

Comentarios

Una función principal del DataView es permitir el enlace de datos tanto en Formularios Windows Forms como en Web Forms.

Además, se puede personalizar un DataView para presentar un subconjunto de datos de la DataTable. Esta funcionalidad le permite tener dos controles enlazados a la misma DataTable, pero que muestran versiones diferentes de los datos. Por ejemplo, un control podría estar enlazado a un DataView que muestre todas las filas de la tabla y un segundo podría configurarse para mostrar solo las filas que se han eliminado de la DataTable. El DataTable también tiene una propiedad DefaultView. Esto devuelve el DataView predeterminado de la tabla. Por ejemplo, si desea crear una vista personalizada en la tabla, establezca el RowFilter en el DataView devuelto por el DefaultView.

Para crear una vista filtrada y ordenada de datos, establezca las propiedades RowFilter y Sort. A continuación, use la propiedad Item[] para devolver un único DataRowView.

También puede agregar y eliminar del conjunto de filas mediante los métodos AddNew y Delete. Cuando se usan esos métodos, la propiedad RowStateFilter puede establecer para especificar que solo las filas eliminadas o las filas nuevas se muestren mediante el DataView.

Nota

Si no especifica explícitamente criterios de ordenación para DataView, los objetos DataRowView de DataView se ordenan en función del índice del DataRow correspondiente de DataView en el DataTable.RowsDataRowCollection.

LINQ to DataSet permite a los desarrolladores crear consultas complejas y eficaces a través de una DataSet mediante LINQ. Sin embargo, una consulta LINQ to DataSet devuelve una enumeración de objetos DataRow, que no se usa fácilmente en un escenario de enlace. DataView se puede crear a partir de una consulta LINQ to DataSet y toma las características de filtrado y ordenación de esa consulta. LINQ to DataSet amplía la funcionalidad del DataView proporcionando filtrado y ordenación basados en expresiones LINQ, lo que permite operaciones de filtrado y ordenación mucho más complejas y eficaces que el filtrado y la ordenación basados en cadenas. Consulte enlace de datos y LINQ to DataSet para obtener más información.

Constructores

DataView()

Inicializa una nueva instancia de la clase DataView.

DataView(DataTable)

Inicializa una nueva instancia de la clase DataView con el DataTableespecificado.

DataView(DataTable, String, String, DataViewRowState)

Inicializa una nueva instancia de la clase DataView con el DataTableespecificado, RowFilter, Sorty DataViewRowState.

Propiedades

AllowDelete

Obtiene o establece un valor que indica si se permiten eliminaciones.

AllowEdit

Obtiene o establece un valor que indica si se permiten modificaciones.

AllowNew

Obtiene o establece un valor que indica si se pueden agregar las nuevas filas mediante el método AddNew().

ApplyDefaultSort

Obtiene o establece un valor que indica si se va a usar la ordenación predeterminada. La ordenación predeterminada es (ascendente) por todas las claves principales especificadas por PrimaryKey.

Container

Obtiene el contenedor del componente.

(Heredado de MarshalByValueComponent)
Count

Obtiene el número de registros de la DataView después de aplicar RowFilter y RowStateFilter.

DataViewManager

Obtiene el DataViewManager asociado a esta vista.

DesignMode

Obtiene un valor que indica si el componente está actualmente en modo de diseño.

(Heredado de MarshalByValueComponent)
Events

Obtiene la lista de controladores de eventos que están asociados a este componente.

(Heredado de MarshalByValueComponent)
IsInitialized

Obtiene un valor que indica si el componente se inicializa.

IsOpen

Obtiene un valor que indica si el origen de datos está abierto actualmente y proyecta vistas de datos en el DataTable.

Item[Int32]

Obtiene una fila de datos de una tabla especificada.

RowFilter

Obtiene o establece la expresión usada para filtrar qué filas se ven en el DataView.

RowStateFilter

Obtiene o establece el filtro de estado de fila usado en el DataView.

Site

Obtiene o establece el sitio del componente.

(Heredado de MarshalByValueComponent)
Sort

Obtiene o establece la columna o columnas de ordenación y el criterio de ordenación de la DataView.

Table

Obtiene o establece el origen DataTable.

Métodos

AddNew()

Agrega una nueva fila al DataView.

BeginInit()

Inicia la inicialización de un DataView que se usa en un formulario o que usa otro componente. La inicialización se produce en tiempo de ejecución.

Close()

Cierra el DataView.

ColumnCollectionChanged(Object, CollectionChangeEventArgs)

Se produce después de que un DataColumnCollection se haya cambiado correctamente.

CopyTo(Array, Int32)

Copia elementos en una matriz. Solo para interfaces de formularios Web Forms.

Delete(Int32)

Elimina una fila en el índice especificado.

Dispose()

Libera todos los recursos usados por el MarshalByValueComponent.

(Heredado de MarshalByValueComponent)
Dispose(Boolean)

Elimina los recursos (distintos de la memoria) utilizados por el objeto DataView.

EndInit()

Finaliza la inicialización de un DataView que se usa en un formulario o que usa otro componente. La inicialización se produce en tiempo de ejecución.

Equals(DataView)

Determina si las instancias de DataView especificadas se consideran iguales.

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
Find(Object)

Busca una fila en el DataView por el valor de clave de ordenación especificado.

Find(Object[])

Busca una fila en el DataView por los valores de clave de ordenación especificados.

FindRows(Object)

Devuelve una matriz de DataRowView objetos cuyas columnas coinciden con el valor de clave de ordenación especificado.

FindRows(Object[])

Devuelve una matriz de DataRowView objetos cuyas columnas coinciden con el valor de clave de ordenación especificado.

GetEnumerator()

Obtiene un enumerador para este DataView.

GetHashCode()

Actúa como función hash predeterminada.

(Heredado de Object)
GetService(Type)

Obtiene el implementador del IServiceProvider.

(Heredado de MarshalByValueComponent)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
IndexListChanged(Object, ListChangedEventArgs)

Se produce después de que un DataView se haya cambiado correctamente.

MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
OnListChanged(ListChangedEventArgs)

Genera el evento ListChanged.

Open()

Abre un DataView.

Reset()

Reservado solo para uso interno.

ToString()

Devuelve un String que contiene el nombre del Component, si existe. Este método no se debe invalidar.

(Heredado de MarshalByValueComponent)
ToTable()

Crea y devuelve un nuevo DataTable basado en filas de un DataViewexistente.

ToTable(Boolean, String[])

Crea y devuelve un nuevo DataTable basado en filas de un DataViewexistente.

ToTable(String)

Crea y devuelve un nuevo DataTable basado en filas de un DataViewexistente.

ToTable(String, Boolean, String[])

Crea y devuelve un nuevo DataTable basado en filas de un DataViewexistente.

UpdateIndex()

Reservado solo para uso interno.

UpdateIndex(Boolean)

Reservado solo para uso interno.

Eventos

Disposed

Agrega un controlador de eventos para escuchar el evento Disposed en el componente.

(Heredado de MarshalByValueComponent)
Initialized

Se produce cuando se completa la inicialización del DataView.

ListChanged

Se produce cuando cambia la lista administrada por el DataView.

Implementaciones de interfaz explícitas

IBindingList.AddIndex(PropertyDescriptor)

Para obtener una descripción de este miembro, consulte AddIndex(PropertyDescriptor).

IBindingList.AddNew()

Para obtener una descripción de este miembro, consulte AddNew().

IBindingList.AllowEdit

Para obtener una descripción de este miembro, consulte AllowEdit.

IBindingList.AllowNew

Para obtener una descripción de este miembro, consulte AllowNew.

IBindingList.AllowRemove

Para obtener una descripción de este miembro, consulte AllowRemove.

IBindingList.ApplySort(PropertyDescriptor, ListSortDirection)

Para obtener una descripción de este miembro, consulte ApplySort(PropertyDescriptor, ListSortDirection).

IBindingList.Find(PropertyDescriptor, Object)

Para obtener una descripción de este miembro, consulte Find(PropertyDescriptor, Object).

IBindingList.IsSorted

Para obtener una descripción de este miembro, consulte IsSorted.

IBindingList.RemoveIndex(PropertyDescriptor)

Para obtener una descripción de este miembro, consulte RemoveIndex(PropertyDescriptor).

IBindingList.RemoveSort()

Para obtener una descripción de este miembro, consulte RemoveSort().

IBindingList.SortDirection

Para obtener una descripción de este miembro, consulte SortDirection.

IBindingList.SortProperty

Para obtener una descripción de este miembro, consulte SortProperty.

IBindingList.SupportsChangeNotification

Para obtener una descripción de este miembro, consulte SupportsChangeNotification.

IBindingList.SupportsSearching

Para obtener una descripción de este miembro, consulte SupportsSearching.

IBindingList.SupportsSorting

Para obtener una descripción de este miembro, consulte SupportsSorting.

IBindingListView.ApplySort(ListSortDescriptionCollection)

Para obtener una descripción de este miembro, consulte ApplySort(ListSortDescriptionCollection).

IBindingListView.Filter

Para obtener una descripción de este miembro, consulte Filter.

IBindingListView.RemoveFilter()

Para obtener una descripción de este miembro, consulte RemoveFilter().

IBindingListView.SortDescriptions

Para obtener una descripción de este miembro, consulte SortDescriptions.

IBindingListView.SupportsAdvancedSorting

Para obtener una descripción de este miembro, consulte SupportsAdvancedSorting.

IBindingListView.SupportsFiltering

Para obtener una descripción de este miembro, consulte SupportsFiltering.

ICollection.IsSynchronized

Para obtener una descripción de este miembro, consulte IsSynchronized.

ICollection.SyncRoot

Para obtener una descripción de este miembro, consulte SyncRoot.

IList.Add(Object)

Para obtener una descripción de este miembro, consulte Add(Object).

IList.Clear()

Para obtener una descripción de este miembro, consulte Clear().

IList.Contains(Object)

Para obtener una descripción de este miembro, consulte Contains(Object).

IList.IndexOf(Object)

Para obtener una descripción de este miembro, consulte IndexOf(Object).

IList.Insert(Int32, Object)

Para obtener una descripción de este miembro, consulte Insert(Int32, Object).

IList.IsFixedSize

Para obtener una descripción de este miembro, consulte IsFixedSize.

IList.IsReadOnly

Para obtener una descripción de este miembro, consulte IsReadOnly.

IList.Item[Int32]

Para obtener una descripción de este miembro, consulte Item[Int32].

IList.Remove(Object)

Para obtener una descripción de este miembro, consulte Remove(Object).

IList.RemoveAt(Int32)

Para obtener una descripción de este miembro, consulte RemoveAt(Int32).

ITypedList.GetItemProperties(PropertyDescriptor[])

Para obtener una descripción de este miembro, consulte GetItemProperties(PropertyDescriptor[]).

ITypedList.GetListName(PropertyDescriptor[])

Para obtener una descripción de este miembro, consulte GetListName(PropertyDescriptor[]).

Métodos de extensión

GetKeyedService<T>(IServiceProvider, Object)

Obtiene un servicio de tipo T del IServiceProvider.

GetKeyedServices(IServiceProvider, Type, Object)

Obtiene una enumeración de servicios de tipo serviceType del IServiceProvider.

GetKeyedServices<T>(IServiceProvider, Object)

Obtiene una enumeración de servicios de tipo T del IServiceProvider.

GetRequiredKeyedService(IServiceProvider, Type, Object)

Obtiene un servicio de tipo serviceType del IServiceProvider.

GetRequiredKeyedService<T>(IServiceProvider, Object)

Obtiene un servicio de tipo T del IServiceProvider.

CreateAsyncScope(IServiceProvider)

Crea un nuevo AsyncServiceScope que se puede usar para resolver los servicios con ámbito.

CreateScope(IServiceProvider)

Crea un nuevo IServiceScope que se puede usar para resolver los servicios con ámbito.

GetRequiredService(IServiceProvider, Type)

Obtenga el servicio de tipo serviceType del IServiceProvider.

GetRequiredService<T>(IServiceProvider)

Obtenga el servicio de tipo T del IServiceProvider.

GetService<T>(IServiceProvider)

Obtenga el servicio de tipo T del IServiceProvider.

GetServices(IServiceProvider, Type)

Obtenga una enumeración de servicios de tipo serviceType del IServiceProvider.

GetServices<T>(IServiceProvider)

Obtenga una enumeración de servicios de tipo T del IServiceProvider.

GetFakeLogCollector(IServiceProvider)

Obtiene el objeto que recopila los registros de registro enviados al registrador falso.

GetFakeRedactionCollector(IServiceProvider)

Obtiene la instancia falsa del recopilador redactor del contenedor de inserción de dependencias.

Cast<TResult>(IEnumerable)

Convierte los elementos de un IEnumerable al tipo especificado.

OfType<TResult>(IEnumerable)

Filtra los elementos de un IEnumerable en función de un tipo especificado.

AsParallel(IEnumerable)

Habilita la paralelización de una consulta.

AsQueryable(IEnumerable)

Convierte un IEnumerable en un IQueryable.

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