DataView Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rappresenta una vista databindable, personalizzata di un DataTable per l'ordinamento, il filtro, la ricerca, la modifica e la navigazione. Il DataView non archivia i dati, ma rappresenta invece una visualizzazione connessa del corrispondente DataTable. Le modifiche apportate ai dati del DataViewinfluiranno sul DataTable. Le modifiche apportate ai dati del DataTableinfluiscono su tutti i DataViewassociati.
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
- Ereditarietà
- Implementazioni
Esempio
Nell'esempio seguente viene creata una singola DataTable con una colonna e cinque righe. Vengono creati due oggetti DataView e la RowStateFilter viene impostata su ognuna per visualizzare visualizzazioni diverse dei dati della tabella. I valori vengono quindi stampati.
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
Nell'esempio seguente viene creato un DataView di ordini online ordinati in base al totale dovuto da una query 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
Commenti
Una funzione principale del DataView consiste nell'consentire il data binding sia in Windows Form che in Web Form.
Inoltre, un DataView può essere personalizzato per presentare un subset di dati dal DataTable. Questa funzionalità consente di avere due controlli associati allo stesso DataTable, ma che mostrano versioni diverse dei dati. Ad esempio, un controllo potrebbe essere associato a un DataView che mostra tutte le righe della tabella e un secondo potrebbe essere configurato per visualizzare solo le righe eliminate dal DataTable. Il DataTable dispone anche di una proprietà DefaultView. Viene restituito il DataView predefinito per la tabella. Ad esempio, se si desidera creare una vista personalizzata nella tabella, impostare il RowFilter sul DataView restituito dal DefaultView.
Per creare una vista filtrata e ordinata dei dati, impostare le proprietà RowFilter e Sort. Usare quindi la proprietà Item[] per restituire un singolo DataRowView.
È anche possibile aggiungere ed eliminare dal set di righe usando i metodi AddNew e Delete. Quando si usano questi metodi, la proprietà RowStateFilter può essere impostata per specificare che solo le righe eliminate o le nuove righe vengano visualizzate dal DataView.
Nota
Se non si specificano in modo esplicito i criteri di ordinamento per DataView
, gli oggetti DataRowView
in DataView
vengono ordinati in base all'indice delle DataRow
corrispondenti di DataView nel DataTable.Rows
DataRowCollection
.
LINQ to DataSet consente agli sviluppatori di creare query complesse e potenti su un DataSet usando LINQ. Una query LINQ to DataSet restituisce un'enumerazione di oggetti DataRow, ma non facilmente usata in uno scenario di associazione. DataView possibile creare da una query LINQ to DataSet e accetta le caratteristiche di filtro e ordinamento di tale query. LINQ to DataSet estende la funzionalità del DataView fornendo filtri e ordinamento basati su espressioni LINQ, che consente operazioni di filtro e ordinamento molto più complesse e potenti rispetto al filtro e all'ordinamento basati su stringhe. Per altre informazioni, vedere data binding e LINQ to DataSet.
Costruttori
DataView() |
Inizializza una nuova istanza della classe DataView. |
DataView(DataTable) |
Inizializza una nuova istanza della classe DataView con il DataTablespecificato. |
DataView(DataTable, String, String, DataViewRowState) |
Inizializza una nuova istanza della classe DataView con l'oggetto DataTablespecificato, RowFilter, Sorte DataViewRowState. |
Proprietà
AllowDelete |
Ottiene o imposta un valore che indica se le eliminazioni sono consentite. |
AllowEdit |
Ottiene o imposta un valore che indica se le modifiche sono consentite. |
AllowNew |
Ottiene o imposta un valore che indica se è possibile aggiungere le nuove righe utilizzando il metodo AddNew(). |
ApplyDefaultSort |
Ottiene o imposta un valore che indica se utilizzare l'ordinamento predefinito. L'ordinamento predefinito è (crescente) per tutte le chiavi primarie specificate da PrimaryKey. |
Container |
Ottiene il contenitore per il componente. (Ereditato da MarshalByValueComponent) |
Count |
Ottiene il numero di record nella DataView dopo l'applicazione di RowFilter e RowStateFilter. |
DataViewManager |
Ottiene il DataViewManager associato a questa visualizzazione. |
DesignMode |
Ottiene un valore che indica se il componente è attualmente in modalità progettazione. (Ereditato da MarshalByValueComponent) |
Events |
Ottiene l'elenco dei gestori eventi associati a questo componente. (Ereditato da MarshalByValueComponent) |
IsInitialized |
Ottiene un valore che indica se il componente viene inizializzato. |
IsOpen |
Ottiene un valore che indica se l'origine dati è attualmente aperta e proietta le viste dei dati nel DataTable. |
Item[Int32] |
Ottiene una riga di dati da una tabella specificata. |
RowFilter |
Ottiene o imposta l'espressione utilizzata per filtrare le righe visualizzate nella DataView. |
RowStateFilter |
Ottiene o imposta il filtro di stato della riga utilizzato nella DataView. |
Site |
Ottiene o imposta il sito del componente. (Ereditato da MarshalByValueComponent) |
Sort |
Ottiene o imposta la colonna o le colonne di ordinamento e l'ordinamento per il DataView. |
Table |
Ottiene o imposta l'origine DataTable. |
Metodi
AddNew() |
Aggiunge una nuova riga al DataView. |
BeginInit() |
Avvia l'inizializzazione di una DataView utilizzata in una maschera o utilizzata da un altro componente. L'inizializzazione viene eseguita in fase di esecuzione. |
Close() |
Chiude il DataView. |
ColumnCollectionChanged(Object, CollectionChangeEventArgs) |
Si verifica dopo che un DataColumnCollection è stato modificato correttamente. |
CopyTo(Array, Int32) |
Copia gli elementi in una matrice. Solo per le interfacce Web Form. |
Delete(Int32) |
Elimina una riga in corrispondenza dell'indice specificato. |
Dispose() |
Rilascia tutte le risorse usate dal MarshalByValueComponent. (Ereditato da MarshalByValueComponent) |
Dispose(Boolean) |
Elimina le risorse (diverse dalla memoria) usate dall'oggetto DataView. |
EndInit() |
Termina l'inizializzazione di una DataView utilizzata in una maschera o utilizzata da un altro componente. L'inizializzazione viene eseguita in fase di esecuzione. |
Equals(DataView) |
Determina se le istanze di DataView specificate sono considerate uguali. |
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
Find(Object) |
Trova una riga nella DataView in base al valore della chiave di ordinamento specificato. |
Find(Object[]) |
Trova una riga nella DataView in base ai valori di chiave di ordinamento specificati. |
FindRows(Object) |
Restituisce una matrice di oggetti DataRowView le cui colonne corrispondono al valore della chiave di ordinamento specificato. |
FindRows(Object[]) |
Restituisce una matrice di oggetti DataRowView le cui colonne corrispondono al valore della chiave di ordinamento specificato. |
GetEnumerator() |
Ottiene un enumeratore per questo DataView. |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetService(Type) |
Ottiene l'implementatore del IServiceProvider. (Ereditato da MarshalByValueComponent) |
GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
IndexListChanged(Object, ListChangedEventArgs) |
Si verifica dopo che un DataView è stato modificato correttamente. |
MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
OnListChanged(ListChangedEventArgs) |
Genera l'evento ListChanged. |
Open() |
Apre un DataView. |
Reset() |
Riservato solo per uso interno. |
ToString() |
Restituisce un String contenente il nome del Component, se presente. Questo metodo non deve essere sottoposto a override. (Ereditato da MarshalByValueComponent) |
ToTable() |
Crea e restituisce un nuovo DataTable in base alle righe di un DataViewesistente. |
ToTable(Boolean, String[]) |
Crea e restituisce un nuovo DataTable in base alle righe di un DataViewesistente. |
ToTable(String) |
Crea e restituisce un nuovo DataTable in base alle righe di un DataViewesistente. |
ToTable(String, Boolean, String[]) |
Crea e restituisce un nuovo DataTable in base alle righe di un DataViewesistente. |
UpdateIndex() |
Riservato solo per uso interno. |
UpdateIndex(Boolean) |
Riservato solo per uso interno. |
Eventi
Disposed |
Aggiunge un gestore eventi per restare in ascolto dell'evento Disposed nel componente. (Ereditato da MarshalByValueComponent) |
Initialized |
Si verifica al termine dell'inizializzazione del DataView. |
ListChanged |
Si verifica quando l'elenco gestito dal DataView cambia. |
Implementazioni dell'interfaccia esplicita
IBindingList.AddIndex(PropertyDescriptor) |
Per una descrizione di questo membro, vedere AddIndex(PropertyDescriptor). |
IBindingList.AddNew() |
Per una descrizione di questo membro, vedere AddNew(). |
IBindingList.AllowEdit |
Per una descrizione di questo membro, vedere AllowEdit. |
IBindingList.AllowNew |
Per una descrizione di questo membro, vedere AllowNew. |
IBindingList.AllowRemove |
Per una descrizione di questo membro, vedere AllowRemove. |
IBindingList.ApplySort(PropertyDescriptor, ListSortDirection) |
Per una descrizione di questo membro, vedere ApplySort(PropertyDescriptor, ListSortDirection). |
IBindingList.Find(PropertyDescriptor, Object) |
Per una descrizione di questo membro, vedere Find(PropertyDescriptor, Object). |
IBindingList.IsSorted |
Per una descrizione di questo membro, vedere IsSorted. |
IBindingList.RemoveIndex(PropertyDescriptor) |
Per una descrizione di questo membro, vedere RemoveIndex(PropertyDescriptor). |
IBindingList.RemoveSort() |
Per una descrizione di questo membro, vedere RemoveSort(). |
IBindingList.SortDirection |
Per una descrizione di questo membro, vedere SortDirection. |
IBindingList.SortProperty |
Per una descrizione di questo membro, vedere SortProperty. |
IBindingList.SupportsChangeNotification |
Per una descrizione di questo membro, vedere SupportsChangeNotification. |
IBindingList.SupportsSearching |
Per una descrizione di questo membro, vedere SupportsSearching. |
IBindingList.SupportsSorting |
Per una descrizione di questo membro, vedere SupportsSorting. |
IBindingListView.ApplySort(ListSortDescriptionCollection) |
Per una descrizione di questo membro, vedere ApplySort(ListSortDescriptionCollection). |
IBindingListView.Filter |
Per una descrizione di questo membro, vedere Filter. |
IBindingListView.RemoveFilter() |
Per una descrizione di questo membro, vedere RemoveFilter(). |
IBindingListView.SortDescriptions |
Per una descrizione di questo membro, vedere SortDescriptions. |
IBindingListView.SupportsAdvancedSorting |
Per una descrizione di questo membro, vedere SupportsAdvancedSorting. |
IBindingListView.SupportsFiltering |
Per una descrizione di questo membro, vedere SupportsFiltering. |
ICollection.IsSynchronized |
Per una descrizione di questo membro, vedere IsSynchronized. |
ICollection.SyncRoot |
Per una descrizione di questo membro, vedere SyncRoot. |
IList.Add(Object) |
Per una descrizione di questo membro, vedere Add(Object). |
IList.Clear() |
Per una descrizione di questo membro, vedere Clear(). |
IList.Contains(Object) |
Per una descrizione di questo membro, vedere Contains(Object). |
IList.IndexOf(Object) |
Per una descrizione di questo membro, vedere IndexOf(Object). |
IList.Insert(Int32, Object) |
Per una descrizione di questo membro, vedere Insert(Int32, Object). |
IList.IsFixedSize |
Per una descrizione di questo membro, vedere IsFixedSize. |
IList.IsReadOnly |
Per una descrizione di questo membro, vedere IsReadOnly. |
IList.Item[Int32] |
Per una descrizione di questo membro, vedere Item[Int32]. |
IList.Remove(Object) |
Per una descrizione di questo membro, vedere Remove(Object). |
IList.RemoveAt(Int32) |
Per una descrizione di questo membro, vedere RemoveAt(Int32). |
ITypedList.GetItemProperties(PropertyDescriptor[]) |
Per una descrizione di questo membro, vedere GetItemProperties(PropertyDescriptor[]). |
ITypedList.GetListName(PropertyDescriptor[]) |
Per una descrizione di questo membro, vedere GetListName(PropertyDescriptor[]). |
Metodi di estensione
GetKeyedService<T>(IServiceProvider, Object) |
Ottiene un servizio di tipo |
GetKeyedServices(IServiceProvider, Type, Object) |
Ottiene un'enumerazione dei servizi di tipo |
GetKeyedServices<T>(IServiceProvider, Object) |
Ottiene un'enumerazione dei servizi di tipo |
GetRequiredKeyedService(IServiceProvider, Type, Object) |
Ottiene un servizio di tipo |
GetRequiredKeyedService<T>(IServiceProvider, Object) |
Ottiene un servizio di tipo |
CreateAsyncScope(IServiceProvider) |
Crea un nuovo AsyncServiceScope che può essere usato per risolvere i servizi con ambito. |
CreateScope(IServiceProvider) |
Crea un nuovo IServiceScope che può essere usato per risolvere i servizi con ambito. |
GetRequiredService(IServiceProvider, Type) |
Ottenere il servizio di tipo |
GetRequiredService<T>(IServiceProvider) |
Ottenere il servizio di tipo |
GetService<T>(IServiceProvider) |
Ottenere il servizio di tipo |
GetServices(IServiceProvider, Type) |
Ottenere un'enumerazione dei servizi di tipo |
GetServices<T>(IServiceProvider) |
Ottenere un'enumerazione dei servizi di tipo |
GetFakeLogCollector(IServiceProvider) |
Ottiene l'oggetto che raccoglie i record di log inviati al logger falso. |
GetFakeRedactionCollector(IServiceProvider) |
Ottiene l'istanza dell'agente di raccolta redactor fittizio dal contenitore di inserimento delle dipendenze. |
Cast<TResult>(IEnumerable) |
Esegue il cast degli elementi di un IEnumerable al tipo specificato. |
OfType<TResult>(IEnumerable) |
Filtra gli elementi di un IEnumerable in base a un tipo specificato. |
AsParallel(IEnumerable) |
Abilita la parallelizzazione di una query. |
AsQueryable(IEnumerable) |
Converte un IEnumerable in un IQueryable. |
Si applica a
Thread safety
Questo tipo è sicuro per le operazioni di lettura multithreading. È necessario sincronizzare tutte le operazioni di scrittura.
Vedi anche
- DataSet
- DataTable
- DataViewManager
- AsDataView
- DataSet, DataTable e DataViews (ADO.NET)