DataView Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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
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.