Compartilhar via


DataView Classe

Definição

Representa uma exibição personalizada e vinculável de um DataTable para classificação, filtragem, pesquisa, edição e navegação. O DataView não armazena dados, mas representa uma exibição conectada de seu DataTablecorrespondente. As alterações nos dados do DataViewafetarão o DataTable. As alterações nos dados do DataTableafetarão todos os DataViewassociados a ele.

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
Herança
Implementações

Exemplos

O exemplo a seguir cria um único DataTable com uma coluna e cinco linhas. Dois objetos DataView são criados e o RowStateFilter é definido em cada um para mostrar exibições diferentes dos dados da tabela. Em seguida, os valores são impressos.

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

O exemplo a seguir cria uma DataView de pedidos online ordenados pelo total devido a uma 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

Comentários

Uma das principais funções do DataView é permitir a associação de dados nos Windows Forms e nos Web Forms.

Além disso, um DataView pode ser personalizado para apresentar um subconjunto de dados do DataTable. Essa funcionalidade permite que você tenha dois controles associados ao mesmo DataTable, mas que mostram versões diferentes dos dados. Por exemplo, um controle pode estar associado a um DataView que mostra todas as linhas da tabela e um segundo pode ser configurado para exibir apenas as linhas que foram excluídas do DataTable. O DataTable também tem uma propriedade DefaultView. Isso retorna o DataView padrão para a tabela. Por exemplo, se você quiser criar uma exibição personalizada na tabela, defina a RowFilter na DataView retornada pelo DefaultView.

Para criar uma exibição filtrada e classificada de dados, defina as propriedades RowFilter e Sort. Em seguida, use a propriedade Item[] para retornar um único DataRowView.

Você também pode adicionar e excluir do conjunto de linhas usando os métodos AddNew e Delete. Quando você usa esses métodos, a propriedade RowStateFilter pode ser definida para especificar que apenas linhas excluídas ou novas linhas sejam exibidas pelo DataView.

Nota

Se você não especificar explicitamente os critérios de classificação para DataView, os objetos DataRowView no DataView serão classificados com base no índice do DataRow correspondente do DataView no DataTable.RowsDataRowCollection.

O LINQ to DataSet permite que os desenvolvedores criem consultas complexas e poderosas em um DataSet usando LINQ. Uma consulta LINQ to DataSet retorna uma enumeração de objetos DataRow, no entanto, que não é facilmente usada em um cenário de associação. DataView pode ser criado de uma consulta LINQ to DataSet e assume as características de filtragem e classificação dessa consulta. LINQ to DataSet estende a funcionalidade do DataView fornecendo filtragem e classificação baseadas em expressão LINQ, o que permite operações de filtragem e classificação muito mais complexas e poderosas do que filtragem e classificação baseadas em cadeia de caracteres. Consulte Data Binding e LINQ to DataSet para obter mais informações.

Construtores

DataView()

Inicializa uma nova instância da classe DataView.

DataView(DataTable)

Inicializa uma nova instância da classe DataView com o DataTableespecificado.

DataView(DataTable, String, String, DataViewRowState)

Inicializa uma nova instância da classe DataView com os DataTable, RowFilter, Sorte DataViewRowStateespecificados.

Propriedades

AllowDelete

Obtém ou define um valor que indica se as exclusões são permitidas.

AllowEdit

Obtém ou define um valor que indica se as edições são permitidas.

AllowNew

Obtém ou define um valor que indica se as novas linhas podem ser adicionadas usando o método AddNew().

ApplyDefaultSort

Obtém ou define um valor que indica se a classificação padrão deve ser usada. A classificação padrão é (crescente) por todas as chaves primárias, conforme especificado por PrimaryKey.

Container

Obtém o contêiner do componente.

(Herdado de MarshalByValueComponent)
Count

Obtém o número de registros no DataView depois que RowFilter e RowStateFilter foram aplicados.

DataViewManager

Obtém o DataViewManager associado a essa exibição.

DesignMode

Obtém um valor que indica se o componente está atualmente no modo de design.

(Herdado de MarshalByValueComponent)
Events

Obtém a lista de manipuladores de eventos anexados a esse componente.

(Herdado de MarshalByValueComponent)
IsInitialized

Obtém um valor que indica se o componente é inicializado.

IsOpen

Obtém um valor que indica se a fonte de dados está aberta no momento e projetando exibições de dados no DataTable.

Item[Int32]

Obtém uma linha de dados de uma tabela especificada.

RowFilter

Obtém ou define a expressão usada para filtrar quais linhas são exibidas no DataView.

RowStateFilter

Obtém ou define o filtro de estado de linha usado no DataView.

Site

Obtém ou define o site do componente.

(Herdado de MarshalByValueComponent)
Sort

Obtém ou define a coluna de classificação ou colunas e a ordem de classificação para o DataView.

Table

Obtém ou define o DataTablede origem.

Métodos

AddNew()

Adiciona uma nova linha ao DataView.

BeginInit()

Inicia a inicialização de um DataView que é usado em um formulário ou usado por outro componente. A inicialização ocorre em runtime.

Close()

Fecha o DataView.

ColumnCollectionChanged(Object, CollectionChangeEventArgs)

Ocorre depois que um DataColumnCollection foi alterado com êxito.

CopyTo(Array, Int32)

Copia itens em uma matriz. Somente para Interfaces do Web Forms.

Delete(Int32)

Exclui uma linha no índice especificado.

Dispose()

Libera todos os recursos usados pelo MarshalByValueComponent.

(Herdado de MarshalByValueComponent)
Dispose(Boolean)

Descarta os recursos (além da memória) usados pelo objeto DataView.

EndInit()

Termina a inicialização de um DataView que é usado em um formulário ou usado por outro componente. A inicialização ocorre em runtime.

Equals(DataView)

Determina se as instâncias de DataView especificadas são consideradas iguais.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
Find(Object)

Localiza uma linha no DataView pelo valor da chave de classificação especificado.

Find(Object[])

Localiza uma linha no DataView pelos valores de chave de classificação especificados.

FindRows(Object)

Retorna uma matriz de objetos DataRowView cujas colunas correspondem ao valor da chave de classificação especificado.

FindRows(Object[])

Retorna uma matriz de objetos DataRowView cujas colunas correspondem ao valor da chave de classificação especificado.

GetEnumerator()

Obtém um enumerador para este DataView.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetService(Type)

Obtém o implementador do IServiceProvider.

(Herdado de MarshalByValueComponent)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IndexListChanged(Object, ListChangedEventArgs)

Ocorre depois que um DataView foi alterado com êxito.

MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
OnListChanged(ListChangedEventArgs)

Gera o evento ListChanged.

Open()

Abre um DataView.

Reset()

Reservado somente para uso interno.

ToString()

Retorna um String que contém o nome do Component, se houver. Esse método não deve ser substituído.

(Herdado de MarshalByValueComponent)
ToTable()

Cria e retorna um novo DataTable com base em linhas em um DataViewexistente.

ToTable(Boolean, String[])

Cria e retorna um novo DataTable com base em linhas em um DataViewexistente.

ToTable(String)

Cria e retorna um novo DataTable com base em linhas em um DataViewexistente.

ToTable(String, Boolean, String[])

Cria e retorna um novo DataTable com base em linhas em um DataViewexistente.

UpdateIndex()

Reservado somente para uso interno.

UpdateIndex(Boolean)

Reservado somente para uso interno.

Eventos

Disposed

Adiciona um manipulador de eventos para ouvir o evento Disposed no componente.

(Herdado de MarshalByValueComponent)
Initialized

Ocorre quando a inicialização do DataView é concluída.

ListChanged

Ocorre quando a lista gerenciada pelo DataView é alterada.

Implantações explícitas de interface

IBindingList.AddIndex(PropertyDescriptor)

Para obter uma descrição desse membro, consulte AddIndex(PropertyDescriptor).

IBindingList.AddNew()

Para obter uma descrição desse membro, consulte AddNew().

IBindingList.AllowEdit

Para obter uma descrição desse membro, consulte AllowEdit.

IBindingList.AllowNew

Para obter uma descrição desse membro, consulte AllowNew.

IBindingList.AllowRemove

Para obter uma descrição desse membro, consulte AllowRemove.

IBindingList.ApplySort(PropertyDescriptor, ListSortDirection)

Para obter uma descrição desse membro, consulte ApplySort(PropertyDescriptor, ListSortDirection).

IBindingList.Find(PropertyDescriptor, Object)

Para obter uma descrição desse membro, consulte Find(PropertyDescriptor, Object).

IBindingList.IsSorted

Para obter uma descrição desse membro, consulte IsSorted.

IBindingList.RemoveIndex(PropertyDescriptor)

Para obter uma descrição desse membro, consulte RemoveIndex(PropertyDescriptor).

IBindingList.RemoveSort()

Para obter uma descrição desse membro, consulte RemoveSort().

IBindingList.SortDirection

Para obter uma descrição desse membro, consulte SortDirection.

IBindingList.SortProperty

Para obter uma descrição desse membro, consulte SortProperty.

IBindingList.SupportsChangeNotification

Para obter uma descrição desse membro, consulte SupportsChangeNotification.

IBindingList.SupportsSearching

Para obter uma descrição desse membro, consulte SupportsSearching.

IBindingList.SupportsSorting

Para obter uma descrição desse membro, consulte SupportsSorting.

IBindingListView.ApplySort(ListSortDescriptionCollection)

Para obter uma descrição desse membro, consulte ApplySort(ListSortDescriptionCollection).

IBindingListView.Filter

Para obter uma descrição desse membro, consulte Filter.

IBindingListView.RemoveFilter()

Para obter uma descrição desse membro, consulte RemoveFilter().

IBindingListView.SortDescriptions

Para obter uma descrição desse membro, consulte SortDescriptions.

IBindingListView.SupportsAdvancedSorting

Para obter uma descrição desse membro, consulte SupportsAdvancedSorting.

IBindingListView.SupportsFiltering

Para obter uma descrição desse membro, consulte SupportsFiltering.

ICollection.IsSynchronized

Para obter uma descrição desse membro, consulte IsSynchronized.

ICollection.SyncRoot

Para obter uma descrição desse membro, consulte SyncRoot.

IList.Add(Object)

Para obter uma descrição desse membro, consulte Add(Object).

IList.Clear()

Para obter uma descrição desse membro, consulte Clear().

IList.Contains(Object)

Para obter uma descrição desse membro, consulte Contains(Object).

IList.IndexOf(Object)

Para obter uma descrição desse membro, consulte IndexOf(Object).

IList.Insert(Int32, Object)

Para obter uma descrição desse membro, consulte Insert(Int32, Object).

IList.IsFixedSize

Para obter uma descrição desse membro, consulte IsFixedSize.

IList.IsReadOnly

Para obter uma descrição desse membro, consulte IsReadOnly.

IList.Item[Int32]

Para obter uma descrição desse membro, consulte Item[Int32].

IList.Remove(Object)

Para obter uma descrição desse membro, consulte Remove(Object).

IList.RemoveAt(Int32)

Para obter uma descrição desse membro, consulte RemoveAt(Int32).

ITypedList.GetItemProperties(PropertyDescriptor[])

Para obter uma descrição desse membro, consulte GetItemProperties(PropertyDescriptor[]).

ITypedList.GetListName(PropertyDescriptor[])

Para obter uma descrição desse membro, consulte GetListName(PropertyDescriptor[]).

Métodos de Extensão

GetKeyedService<T>(IServiceProvider, Object)

Obtém um serviço do tipo T do IServiceProvider.

GetKeyedServices(IServiceProvider, Type, Object)

Obtém uma enumeração de serviços do tipo serviceType do IServiceProvider.

GetKeyedServices<T>(IServiceProvider, Object)

Obtém uma enumeração de serviços do tipo T do IServiceProvider.

GetRequiredKeyedService(IServiceProvider, Type, Object)

Obtém um serviço do tipo serviceType do IServiceProvider.

GetRequiredKeyedService<T>(IServiceProvider, Object)

Obtém um serviço do tipo T do IServiceProvider.

CreateAsyncScope(IServiceProvider)

Cria um novo AsyncServiceScope que pode ser usado para resolver serviços com escopo.

CreateScope(IServiceProvider)

Cria um novo IServiceScope que pode ser usado para resolver serviços com escopo.

GetRequiredService(IServiceProvider, Type)

Obtenha o serviço do tipo serviceType do IServiceProvider.

GetRequiredService<T>(IServiceProvider)

Obtenha o serviço do tipo T do IServiceProvider.

GetService<T>(IServiceProvider)

Obtenha o serviço do tipo T do IServiceProvider.

GetServices(IServiceProvider, Type)

Obter uma enumeração de serviços do tipo serviceType do IServiceProvider.

GetServices<T>(IServiceProvider)

Obter uma enumeração de serviços do tipo T do IServiceProvider.

GetFakeLogCollector(IServiceProvider)

Obtém o objeto que coleta registros de log enviados para o agente falso.

GetFakeRedactionCollector(IServiceProvider)

Obtém a instância falsa do coletor de refatoração do contêiner de injeção de dependência.

Cast<TResult>(IEnumerable)

Converte os elementos de um IEnumerable para o tipo especificado.

OfType<TResult>(IEnumerable)

Filtra os elementos de um IEnumerable com base em um tipo especificado.

AsParallel(IEnumerable)

Habilita a paralelização de uma consulta.

AsQueryable(IEnumerable)

Converte um IEnumerable em um IQueryable.

Aplica-se a

Acesso thread-safe

Esse tipo é seguro para operações de leitura multithreaded. Você deve sincronizar todas as operações de gravação.

Confira também