DataView Classe

Definição

Representa uma vista personalizada e databindable para DataTable ordenação, filtragem, pesquisa, edição e navegação. O DataView não armazena dados, mas representa uma vista conexa do seu correspondente DataTable. Alterações aos DataViewdados de s afetarão o DataTable. Alterações aos DataTabledados de s afetarão todos DataViewos s associados a eles.

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.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 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
type DataView = class
    inherit MarshalByValueComponent
    interface ICollection
    interface IEnumerable
    interface IList
    interface IBindingList
    interface IBindingListView
    interface ISupportInitialize
    interface ISupportInitializeNotification
    interface 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 seguinte cria um único DataTable com uma coluna e cinco linhas. São criados dois DataView objetos e é RowStateFilter definido em cada um para mostrar diferentes vistas dos dados da tabela. Os valores são entã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 seguinte cria uma DataView lista de encomendas online ordenadas pelo total devido a partir de uma consulta LINQ para 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

Observações

Uma função principal do DataView é permitir a ligação de dados tanto no Windows Forms como no Web Forms.

Além disso, um DataView pode ser personalizado para apresentar um subconjunto de dados do DataTable. Esta funcionalidade permite ter dois controlos atribuídos ao mesmo DataTable, mas que mostram versões diferentes dos dados. Por exemplo, um controlo pode estar associado DataView a a que mostra todas as linhas da tabela, e um segundo pode estar configurado para mostrar apenas as linhas que foram eliminadas do DataTable. Também DataTable tem uma DefaultView propriedade. Isto devolve o padrão DataView para a tabela. Por exemplo, se quiser criar uma vista personalizada na tabela, defina o RowFilter no DataView retorno pelo DefaultView.

Para criar uma vista filtrada e ordenada dos dados, defina as RowFilter propriedades e.Sort Depois, use a Item[] propriedade para devolver um único DataRowView.

Também pode adicionar e eliminar do conjunto de linhas usando os AddNew métodos e.Delete Quando usa esses métodos, a RowStateFilter propriedade pode definir para especificar que apenas as linhas eliminadas ou novas linhas sejam exibidas DataViewpelo .

Note

Se não especificar explicitamente os critérios de ordenação para , os objetos em DataView são ordenados com base no índice correspondente DataRow do DataView no DataTable.RowsDataRowCollection.DataRowViewDataView

O LINQ para DataSet permite aos programadores criar consultas complexas e poderosas através de um DataSet usando o LINQ. No entanto, uma consulta LINQ para DataSet devolve uma enumeração de DataRow objetos, o que não é facilmente utilizado num cenário de ligação. DataView pode ser criado a partir de uma consulta LINQ para DataSet e assume as características de filtragem e ordenação dessa consulta. LINQ to DataSet estende a funcionalidade do DataView ao fornecer filtragem e ordenação baseadas em expressões LINQ, o que permite operações de filtragem e ordenação muito mais complexas e poderosas do que filtragem e ordenação baseadas em cadeias de caracteres. Consulte Data Binding e LINQ to DataSet para mais informações.

Construtores

Name Description
DataView()

Inicializa uma nova instância da DataView classe.

DataView(DataTable, String, String, DataViewRowState)

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

DataView(DataTable)

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

Propriedades

Name Description
AllowDelete

Recebe ou define um valor que indica se são permitidas eliminações.

AllowEdit

Recebe 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

Recebe ou define um valor que indica se deve usar a ordenação por defeito. A ordenação padrão é (ascendente) por todas as chaves primárias conforme especificado por PrimaryKey.

Container

Recebe o recipiente do componente.

(Herdado de MarshalByValueComponent)
Count

Obtém o número de registos DataView a seguir RowFilter e RowStateFilter que foram aplicados.

DataViewManager

Percebe o DataViewManager que está associado a esta perspetiva.

DesignMode

Recebe um valor que indica se o componente está atualmente em modo de design.

(Herdado de MarshalByValueComponent)
Events

Obtém a lista de gestores de eventos que estão associados a este componente.

(Herdado de MarshalByValueComponent)
IsInitialized

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

IsOpen

Obtém um valor que indica se a fonte de dados está atualmente aberta e a projetar vistas dos 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 vistas no DataView.

RowStateFilter

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

Site

Obtém ou define o local do componente.

(Herdado de MarshalByValueComponent)
Sort

Obtém ou define a coluna ou colunas de ordenação, e ordenam para o DataView.

Table

Obtém ou define a fonte DataTable.

Métodos

Name Description
AddNew()

Adiciona uma nova linha ao DataView.

BeginInit()

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

Close()

Fecha o DataView.

ColumnCollectionChanged(Object, CollectionChangeEventArgs)

Ocorre depois de um DataColumnCollection ter sido alterado com sucesso.

CopyTo(Array, Int32)

Copia itens para um array. Apenas para interfaces de formulários web.

Delete(Int32)

Apaga uma linha no índice especificado.

Dispose()

Liberta todos os recursos utilizados pelo MarshalByValueComponent.

(Herdado de MarshalByValueComponent)
Dispose(Boolean)

Elimina os recursos (exceto memória) usados pelo DataView objeto.

EndInit()

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

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)

Encontra uma linha no DataView valor da chave de ordenação especificado.

Find(Object[])

Encontra uma linha nos DataView valores da chave de ordenação especificados.

FindRows(Object)

Devolve um array de DataRowView objetos cujas colunas correspondem ao valor especificado da chave de ordenação.

FindRows(Object[])

Devolve um array de DataRowView objetos cujas colunas correspondem ao valor especificado da chave de ordenação.

GetEnumerator()

Recebe um enumerador para isto DataView.

GetHashCode()

Serve como função de hash predefinida.

(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 de um DataView ter sido alterado com sucesso.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
OnListChanged(ListChangedEventArgs)

Eleva o ListChanged evento.

Open()

Abre um DataView.

Reset()

Reservado apenas para uso interno.

ToString()

Devolve a String contendo o nome do Component, se existir. Este método não deve ser ultrapassado.

(Herdado de MarshalByValueComponent)
ToTable()

Cria e devolve um novo DataTable com base em linhas num .DataView

ToTable(Boolean, String[])

Cria e devolve um novo DataTable com base em linhas num .DataView

ToTable(String, Boolean, String[])

Cria e devolve um novo DataTable com base em linhas num .DataView

ToTable(String)

Cria e devolve um novo DataTable com base em linhas num .DataView

UpdateIndex()

Reservado apenas para uso interno.

UpdateIndex(Boolean)

Reservado apenas para uso interno.

evento

Name Description
Disposed

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

(Herdado de MarshalByValueComponent)
Initialized

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

ListChanged

Ocorre quando a lista é gerida pelas DataView alterações.

Implementações de Interface Explícita

Name Description
IBindingList.AddIndex(PropertyDescriptor)

Para uma descrição deste elemento, veja AddIndex(PropertyDescriptor).

IBindingList.AddNew()

Para uma descrição deste elemento, veja AddNew().

IBindingList.AllowEdit

Para uma descrição deste elemento, veja AllowEdit.

IBindingList.AllowNew

Para uma descrição deste elemento, veja AllowNew.

IBindingList.AllowRemove

Para uma descrição deste elemento, veja AllowRemove.

IBindingList.ApplySort(PropertyDescriptor, ListSortDirection)

Para uma descrição deste elemento, veja ApplySort(PropertyDescriptor, ListSortDirection).

IBindingList.Find(PropertyDescriptor, Object)

Para uma descrição deste elemento, veja Find(PropertyDescriptor, Object).

IBindingList.IsSorted

Para uma descrição deste elemento, veja IsSorted.

IBindingList.RemoveIndex(PropertyDescriptor)

Para uma descrição deste elemento, veja RemoveIndex(PropertyDescriptor).

IBindingList.RemoveSort()

Para uma descrição deste elemento, veja RemoveSort().

IBindingList.SortDirection

Para uma descrição deste elemento, veja SortDirection.

IBindingList.SortProperty

Para uma descrição deste elemento, veja SortProperty.

IBindingList.SupportsChangeNotification

Para uma descrição deste elemento, veja SupportsChangeNotification.

IBindingList.SupportsSearching

Para uma descrição deste elemento, veja SupportsSearching.

IBindingList.SupportsSorting

Para uma descrição deste elemento, veja SupportsSorting.

IBindingListView.ApplySort(ListSortDescriptionCollection)

Para uma descrição deste elemento, veja ApplySort(ListSortDescriptionCollection).

IBindingListView.Filter

Para uma descrição deste elemento, veja Filter.

IBindingListView.RemoveFilter()

Para uma descrição deste elemento, veja RemoveFilter().

IBindingListView.SortDescriptions

Para uma descrição deste elemento, veja SortDescriptions.

IBindingListView.SupportsAdvancedSorting

Para uma descrição deste elemento, veja SupportsAdvancedSorting.

IBindingListView.SupportsFiltering

Para uma descrição deste elemento, veja SupportsFiltering.

ICollection.IsSynchronized

Para uma descrição deste elemento, veja IsSynchronized.

ICollection.SyncRoot

Para uma descrição deste elemento, veja SyncRoot.

IList.Add(Object)

Para uma descrição deste elemento, veja Add(Object).

IList.Clear()

Para uma descrição deste elemento, veja Clear().

IList.Contains(Object)

Para uma descrição deste elemento, veja Contains(Object).

IList.IndexOf(Object)

Para uma descrição deste elemento, veja IndexOf(Object).

IList.Insert(Int32, Object)

Para uma descrição deste elemento, veja Insert(Int32, Object).

IList.IsFixedSize

Para uma descrição deste elemento, veja IsFixedSize.

IList.IsReadOnly

Para uma descrição deste elemento, veja IsReadOnly.

IList.Item[Int32]

Para uma descrição deste elemento, veja Item[Int32].

IList.Remove(Object)

Para uma descrição deste elemento, veja Remove(Object).

IList.RemoveAt(Int32)

Para uma descrição deste elemento, veja RemoveAt(Int32).

ITypedList.GetItemProperties(PropertyDescriptor[])

Para uma descrição deste elemento, veja GetItemProperties(PropertyDescriptor[]).

ITypedList.GetListName(PropertyDescriptor[])

Para uma descrição deste elemento, veja GetListName(PropertyDescriptor[]).

Métodos da Extensão

Name Description
AsParallel(IEnumerable)

Permite a paralelização de uma consulta.

AsQueryable(IEnumerable)

Converte um IEnumerable para um IQueryable.

Cast<TResult>(IEnumerable)

Conjura os elementos de an IEnumerable para o tipo especificado.

OfType<TResult>(IEnumerable)

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

Aplica-se a

Segurança de Thread

Este tipo é seguro para operações de leitura multithread. Tem de sincronizar quaisquer operações de escrita.

Ver também