DataView Classe

Definição

Representa uma exibição personalizada sujeita a limite de dados de um DataTable para classificação, filtragem, pesquisa, edição e navegação. O DataView não armazenam dados, mas representa uma exibição conectada do DataTable correspondente. Alterações aos dados do DataView afetarão o DataTable. Alterações aos dados do DataTable afetarão todos os DataViews associados 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 DataView objetos são criados e o RowStateFilter é definido em cada um para mostrar diferentes exibições 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 um 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 função principal do é permitir a associação de DataView dados em Windows Forms e 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 na tabela e um segundo pode ser configurado para exibir apenas as linhas que foram excluídas do DataTable. O DataTable também tem uma DefaultView propriedade . Isso retorna o padrão DataView para a tabela. Por exemplo, se você quiser criar uma exibição personalizada na tabela, defina o RowFilterDataView no retornado pelo DefaultView.

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

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

Observação

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

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 DataRow objetos, no entanto, que não é facilmente usada em um cenário de associação. DataViewpode ser criado a partir de uma consulta LINQ to DataSet e assume as características de filtragem e classificação dessa consulta. O LINQ to DataSet estende a funcionalidade do DataView fornecendo filtragem com base em expressão LINQ, que permite operações de filtragem e classificação muito mais complexas e avançadas do que a filtragem e a classificação com base em cadeia de caracteres. Consulte Associação de dados 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 DataTable especificado.

DataView(DataTable, String, String, DataViewRowState)

Inicializa uma nova instância da classe DataView com o DataTable, RowFilter, Sort e DataViewRowState especificados.

Propriedades

AllowDelete

Obtém ou define um valor que indica se é permitido excluir.

AllowEdit

Obtém ou define um valor que indica se é permitido editar.

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 para o componente.

(Herdado de MarshalByValueComponent)
Count

Obtém o número de registros em DataView após RowFilter e RowStateFilter terem sido aplicados.

DataViewManager

Obtém o DataViewManager associado a esta 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 que estão anexados a este 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á atualmente aberta 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 ou as colunas de classificação e a ordem de classificação para o DataView.

Table

Obtém ou define o DataTable de origem.

Métodos

AddNew()

Adiciona uma nova linha ao DataView.

BeginInit()

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

Close()

Fecha o DataView.

ColumnCollectionChanged(Object, CollectionChangeEventArgs)

Ocorre após um DataColumnCollection ter sido alterado com êxito.

CopyTo(Array, Int32)

Copia os itens para 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 (exceto a memória) usados pelo objeto DataView.

EndInit()

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

Equals(DataView)

Determina se as instâncias 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 segundo o valor da chave de classificação especificada.

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 após um DataView ter sido alterado com êxito.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
OnListChanged(ListChangedEventArgs)

Aciona o evento ListChanged.

Open()

Abre um DataView.

Reset()

Reservado apenas 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 DataView existente.

ToTable(Boolean, String[])

Cria e retorna um novo DataTable com base em linhas em um DataView existente.

ToTable(String)

Cria e retorna um novo DataTable com base em linhas em um DataView existente.

ToTable(String, Boolean, String[])

Cria e retorna um novo DataTable com base em linhas em um DataView existente.

UpdateIndex()

Reservado apenas para uso interno.

UpdateIndex(Boolean)

Reservado apenas para uso interno.

Eventos

Disposed

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

(Herdado de MarshalByValueComponent)
Initialized

Ocorrerá quando a inicialização da DataView for 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, confira AddIndex(PropertyDescriptor).

IBindingList.AddNew()

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

IBindingList.AllowEdit

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

IBindingList.AllowNew

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

IBindingList.AllowRemove

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

IBindingList.ApplySort(PropertyDescriptor, ListSortDirection)

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

IBindingList.Find(PropertyDescriptor, Object)

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

IBindingList.IsSorted

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

IBindingList.RemoveIndex(PropertyDescriptor)

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

IBindingList.RemoveSort()

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

IBindingList.SortDirection

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

IBindingList.SortProperty

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

IBindingList.SupportsChangeNotification

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

IBindingList.SupportsSearching

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

IBindingList.SupportsSorting

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

IBindingListView.ApplySort(ListSortDescriptionCollection)

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

IBindingListView.Filter

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

IBindingListView.RemoveFilter()

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

IBindingListView.SortDescriptions

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

IBindingListView.SupportsAdvancedSorting

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

IBindingListView.SupportsFiltering

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

ICollection.IsSynchronized

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

ICollection.SyncRoot

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

IList.Add(Object)

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

IList.Clear()

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

IList.Contains(Object)

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

IList.IndexOf(Object)

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

IList.Insert(Int32, Object)

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

IList.IsFixedSize

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

IList.IsReadOnly

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

IList.Item[Int32]

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

IList.Remove(Object)

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

IList.RemoveAt(Int32)

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

ITypedList.GetItemProperties(PropertyDescriptor[])

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

ITypedList.GetListName(PropertyDescriptor[])

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

Métodos de Extensão

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

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

Confira também