Partilhar via


DataView Classe

Definição

Representa uma exibição vinculável e personalizada de um DataTable modo de classificação, filtragem, pesquisa, edição e navegação. O DataView não armazena dados, mas representa uma exibição conectada de seu correspondente DataTable. As alterações nos DataViewdados afetarão o DataTable. As alterações nos DataTabledados afetarã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 DataView objetos são criados e são RowStateFilter definidos 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 pedido online ordenado 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 é permitir a DataView 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 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 um modo de exibição personalizado na tabela, defina o RowFilter valor retornado DataView pelo DefaultView.

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

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

Nota

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

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 DataRow objetos, no entanto, que não é facilmente usada em um cenário de associação. DataView pode ser criado a partir 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 Associação de Dados e LINQ to DataSet para obter mais informações.

Construtores

Nome Description
DataView()

Inicializa uma nova instância da classe DataView.

DataView(DataTable, String, String, DataViewRowState)

Inicializa uma nova instância da DataView classe com as especificadas DataTable, RowFiltere SortDataViewRowState.

DataView(DataTable)

Inicializa uma nova instância da DataView classe com a especificada DataTable.

Propriedades

Nome Description
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 AddNew() método.

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 after 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 a origem DataTable.

Métodos

Nome Description
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 DataView objeto.

EndInit()

Encerra 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 especificadas DataView 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 valor da chave de classificação especificado.

Find(Object[])

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

FindRows(Object)

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

FindRows(Object[])

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

GetEnumerator()

Obtém um enumerador para isso 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)

Aciona 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 existente DataView.

ToTable(Boolean, String[])

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

ToTable(String, Boolean, String[])

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

ToTable(String)

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

UpdateIndex()

Reservado somente para uso interno.

UpdateIndex(Boolean)

Reservado somente para uso interno.

Eventos

Nome Description
Disposed

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

(Herdado de MarshalByValueComponent)
Initialized

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

ListChanged

Ocorre quando a lista gerenciada pelas DataView alterações.

Implantações explícitas de interface

Nome Description
IBindingList.AddIndex(PropertyDescriptor)

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

IBindingList.AddNew()

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

IBindingList.AllowEdit

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

IBindingList.AllowNew

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

IBindingList.AllowRemove

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

IBindingList.ApplySort(PropertyDescriptor, ListSortDirection)

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

IBindingList.Find(PropertyDescriptor, Object)

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

IBindingList.IsSorted

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

IBindingList.RemoveIndex(PropertyDescriptor)

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

IBindingList.RemoveSort()

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

IBindingList.SortDirection

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

IBindingList.SortProperty

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

IBindingList.SupportsChangeNotification

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

IBindingList.SupportsSearching

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

IBindingList.SupportsSorting

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

IBindingListView.ApplySort(ListSortDescriptionCollection)

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

IBindingListView.Filter

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

IBindingListView.RemoveFilter()

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

IBindingListView.SortDescriptions

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

IBindingListView.SupportsAdvancedSorting

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

IBindingListView.SupportsFiltering

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

ICollection.IsSynchronized

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

ICollection.SyncRoot

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

IList.Add(Object)

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

IList.Clear()

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

IList.Contains(Object)

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

IList.IndexOf(Object)

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

IList.Insert(Int32, Object)

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

IList.IsFixedSize

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

IList.IsReadOnly

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

IList.Item[Int32]

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

IList.Remove(Object)

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

IList.RemoveAt(Int32)

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

ITypedList.GetItemProperties(PropertyDescriptor[])

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

ITypedList.GetListName(PropertyDescriptor[])

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

Métodos de Extensão

Nome Description
AsParallel(IEnumerable)

Habilita a paralelização de uma consulta.

AsQueryable(IEnumerable)

Converte um IEnumerable em um IQueryable.

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.

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