Rappresenta una visualizzazione personalizzata e associabile a dati di un oggetto DataTable per operazioni di ordinamento, filtro, ricerca, modifica ed esplorazione.
System.ComponentModel.MarshalByValueComponent
System.Data.DataView
Spazio dei nomi: System.Data
Assembly: System.Data (in System.Data.dll)
Public Class DataView _ Inherits MarshalByValueComponent _ Implements IBindingListView, IBindingList, IList, ICollection, _ IEnumerable, ITypedList, ISupportInitializeNotification, ISupportInitialize
public class DataView : MarshalByValueComponent, IBindingListView, IBindingList, IList, ICollection, IEnumerable, ITypedList, ISupportInitializeNotification, ISupportInitialize
public ref class DataView : public MarshalByValueComponent, IBindingListView, IBindingList, IList, ICollection, IEnumerable, ITypedList, ISupportInitializeNotification, ISupportInitialize
type DataView = class inherit MarshalByValueComponent interface IBindingListView interface IBindingList interface IList interface ICollection interface IEnumerable interface ITypedList interface ISupportInitializeNotification interface ISupportInitialize end
Il tipo DataView espone i seguenti membri.
| Nome | Descrizione | |
|---|---|---|
|
DataView() | Inizializza una nuova istanza della classe DataView. |
|
DataView(DataTable) | Inizializza una nuova istanza della classe DataView con la classe DataTable specificata. |
|
DataView(DataTable, String, String, DataViewRowState) | Inizializza una nuova istanza della classe DataView con l'oggetto DataTable, le proprietà RowFilter e Sort e l'oggetto DataViewRowState specificati. |
| Nome | Descrizione | |
|---|---|---|
|
AllowDelete | Ottiene o imposta un valore che indica se sono consentite eliminazioni. |
|
AllowEdit | Ottiene o imposta un valore che indica se sono consentite modifiche. |
|
AllowNew | Ottiene o imposta un valore che indica se le nuove righe possono essere aggiunte con il metodo AddNew. |
|
ApplyDefaultSort | Ottiene o imposta un valore che indica se utilizzare l'ordinamento predefinito. |
|
Container | Ottiene il contenitore del componente. (Ereditato da MarshalByValueComponent) |
|
Count | Ottiene il numero di record nell'oggetto DataView dopo l'applicazione delle proprietà RowFilter e RowStateFilter. |
|
DataViewManager | Ottiene l'oggetto DataViewManager associato a questa visualizzazione. |
|
DesignMode | Ottiene un valore che indica se il componente è in modalità progettazione. (Ereditato da MarshalByValueComponent) |
|
Events | Ottiene l'elenco dei gestori eventi allegati a questo componente. (Ereditato da MarshalByValueComponent) |
|
IsInitialized | Ottiene un valore che indica se il componente è inizializzato. |
|
IsOpen | Ottiene un valore che indica se l'origine dati è attualmente aperta e proietta visualizzazioni di dati sulla classe DataTable. |
|
Item | Ottiene una riga di dati da una tabella specificata. |
|
RowFilter | Ottiene o imposta l'espressione utilizzata per filtrare le righe da visualizzare nell'oggetto DataView. |
|
RowStateFilter | Ottiene o imposta il filtro di stato della riga utilizzato nell'oggetto DataView. |
|
Site | Ottiene o imposta il sito del componente. (Ereditato da MarshalByValueComponent) |
|
Sort | Ottiene o imposta le colonne di ordinamento e la sequenza di ordinamento per l'oggetto DataView. |
|
Table | Ottiene o imposta l'oggetto DataTable di origine. |
| Nome | Descrizione | |
|---|---|---|
|
AddNew | Aggiunge una nuova riga all'oggetto DataView. |
|
BeginInit | Avvia l'inizializzazione di una classe DataView utilizzata su un form o da un altro componente. L'inizializzazione avviene in fase di esecuzione. |
|
Close | Chiude la classe DataView. |
|
ColumnCollectionChanged | Viene generato una volta che è stato modificata correttamente una classe DataColumnCollection. |
|
CopyTo | Copia gli elementi in una matrice. Solo per le interfacce di Web Form. |
|
Delete | Elimina una riga in corrispondenza dell'indice specificato. |
|
Dispose() | Libera tutte le risorse utilizzate da MarshalByValueComponent. (Ereditato da MarshalByValueComponent) |
|
Dispose(Boolean) | Elimina le risorse, diverse dalla memoria, utilizzate dall'oggetto DataView. (Esegue l'override di MarshalByValueComponent.Dispose(Boolean)). |
|
EndInit | Termina l'inizializzazione di una classe DataView utilizzata su un form o da un altro componente. L'inizializzazione avviene in fase di esecuzione. |
|
Equals(DataView) | Determina se le istanze di DataView specificate sono considerate uguali. |
|
Equals(Object) | Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object) |
|
Finalize | Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto stesso venga recuperato dalla procedura di Garbage Collection. (Ereditato da MarshalByValueComponent) |
|
Find(Object) | Trova una riga nell'oggetto DataView in base al valore di chiave di ordinamento specificato. |
|
Find(Object[]) | Trova una riga nell'oggetto DataView in base ai valori di chiave di ordinamento specificati. |
|
FindRows(Object) | Restituisce una matrice di oggetti DataRowView le cui colonne corrispondono al valore di chiave di ordinamento specificato. |
|
FindRows(Object[]) | Restituisce una matrice di oggetti DataRowView le cui colonne corrispondono al valore di chiave di ordinamento specificato. |
|
GetEnumerator | Ottiene un enumeratore per questa classe DataView. |
|
GetHashCode | Funge da funzione hash per un determinato tipo. (Ereditato da Object) |
|
GetService | Ottiene l'implementatore dell'interfaccia IServiceProvider. (Ereditato da MarshalByValueComponent) |
|
GetType | Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
|
IndexListChanged | Viene generato una volta che è stato modificata correttamente una classe DataView. |
|
MemberwiseClone | Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object) |
|
OnListChanged | Genera l'evento ListChanged. |
|
Open | Apre un oggetto DataView. |
|
Reset | Riservato unicamente per l'utilizzo interno. |
|
ToString | Restituisce un oggetto String contenente il nome dell'oggetto Component, se presente. Non è consigliabile eseguire l'override di questo metodo. (Ereditato da MarshalByValueComponent) |
|
ToTable() | Crea e restituisce una nuova classe DataTable basata sulle righe di una classe DataView esistente. |
|
ToTable(String) | Crea e restituisce una nuova classe DataTable basata sulle righe di una classe DataView esistente. |
|
ToTable(Boolean, String[]) | Crea e restituisce una nuova classe DataTable basata sulle righe di una classe DataView esistente. |
|
ToTable(String, Boolean, String[]) | Crea e restituisce una nuova classe DataTable basata sulle righe di una classe DataView esistente. |
|
UpdateIndex() | Riservato unicamente per l'utilizzo interno. |
|
UpdateIndex(Boolean) | Riservato unicamente per l'utilizzo interno. |
| Nome | Descrizione | |
|---|---|---|
|
Disposed | Aggiunge un gestore eventi per restare in attesa dell'evento Disposed sul componente. (Ereditato da MarshalByValueComponent) |
|
Initialized | Si verifica quando l'inizializzazione della classe DataView è completata. |
|
ListChanged | Viene generato quando varia l'elenco gestito dall'oggetto DataView. |
| Nome | Descrizione | |
|---|---|---|
|
AsParallel | Consente la parallelizzazione di una query. (Definito da ParallelEnumerable). |
|
AsQueryable | Converte un oggetto IEnumerable in un oggetto IQueryable. (Definito da Queryable). |
|
Cast<TResult> | Converte gli elementi di un oggetto IEnumerable nel tipo specificato. (Definito da Enumerable). |
|
OfType<TResult> | Filtra gli elementi di un oggetto IEnumerable in base a un tipo specificato. (Definito da Enumerable). |
| Nome | Descrizione | |
|---|---|---|
|
IBindingList.AddIndex | Per una descrizione di questo membro, vedere IBindingList.AddIndex. |
|
IBindingList.AddNew | Per una descrizione di questo membro, vedere il metodo IBindingList.AddNew. |
|
IBindingList.AllowEdit | Per una descrizione di questo membro, vedere il metodo IBindingList.AllowEdit. |
|
IBindingList.AllowNew | Per una descrizione di questo membro, vedere il metodo IBindingList.AllowNew. |
|
IBindingList.AllowRemove | Per una descrizione di questo membro, vedere il metodo IBindingList.AllowRemove. |
|
IBindingList.ApplySort | Per una descrizione di questo membro, vedere IBindingList.ApplySort. |
|
IBindingList.Find | Per una descrizione di questo membro, vedere IBindingList.Find. |
|
IBindingList.IsSorted | Per una descrizione di questo membro, vedere il metodo IBindingList.IsSorted. |
|
IBindingList.RemoveIndex | Per una descrizione di questo membro, vedere IBindingList.RemoveIndex. |
|
IBindingList.RemoveSort | Per una descrizione di questo membro, vedere IBindingList.RemoveSort. |
|
IBindingList.SortDirection | Per una descrizione di questo membro, vedere il metodo IBindingList.SortDirection. |
|
IBindingList.SortProperty | Per una descrizione di questo membro, vedere il metodo IBindingList.SortProperty. |
|
IBindingList.SupportsChangeNotification | Per una descrizione di questo membro, vedere il metodo IBindingList.SupportsChangeNotification. |
|
IBindingList.SupportsSearching | Per una descrizione di questo membro, vedere il metodo IBindingList.SupportsSearching. |
|
IBindingList.SupportsSorting | Per una descrizione di questo membro, vedere il metodo IBindingList.SupportsSorting. |
|
IBindingListView.ApplySort | Per una descrizione di questo membro, vedere IBindingListView.ApplySort. |
|
IBindingListView.Filter | Per una descrizione di questo membro, vedere il metodo IBindingListView.Filter. |
|
IBindingListView.RemoveFilter | Per una descrizione di questo membro, vedere IBindingListView.RemoveFilter. |
|
IBindingListView.SortDescriptions | Per una descrizione di questo membro, vedere il metodo IBindingListView.SortDescriptions. |
|
IBindingListView.SupportsAdvancedSorting | Per una descrizione di questo membro, vedere il metodo IBindingListView.SupportsAdvancedSorting. |
|
IBindingListView.SupportsFiltering | Per una descrizione di questo membro, vedere il metodo IBindingListView.SupportsFiltering. |
|
ICollection.IsSynchronized | Per una descrizione di questo membro, vedere ICollection.IsSynchronized. |
|
ICollection.SyncRoot | Per una descrizione di questo membro, vedere ICollection.SyncRoot. |
|
IList.Add | Per una descrizione di questo membro, vedere IList.Add. |
|
IList.Clear | Per una descrizione di questo membro, vedere IList.Clear. |
|
IList.Contains | Per una descrizione di questo membro, vedere IList.Contains. |
|
IList.IndexOf | Per una descrizione di questo membro, vedere IList.IndexOf. |
|
IList.Insert | Per una descrizione di questo membro, vedere IList.Insert. |
|
IList.IsFixedSize | Per una descrizione di questo membro, vedere IList.IsFixedSize. |
|
IList.IsReadOnly | Per una descrizione di questo membro, vedere IList.IsReadOnly. |
|
IList.Item | Per una descrizione di questo membro, vedere IList.Item. |
|
IList.Remove | Per una descrizione di questo membro, vedere IList.Remove. |
|
IList.RemoveAt | Per una descrizione di questo membro, vedere IList.RemoveAt. |
|
ITypedList.GetItemProperties | Per una descrizione di questo membro, vedere ITypedList.GetItemProperties. |
|
ITypedList.GetListName | Per una descrizione di questo membro, vedere ITypedList.GetListName. |
Una funzione fondamentale della classe DataView consiste nel consentire l'associazione a dati in Windows Form e Web Form.
È inoltre possibile personalizzare un oggetto DataView per presentare un sottoinsieme di dati dell'oggetto DataTable. Questa funzionalità consente di disporre di due controlli associati alla stessa classe DataTable, in cui vengono però visualizzate versioni differenti dei dati. È possibile ad esempio che un controllo sia associato a una classe DataView in cui vengono visualizzate tutte le righe della tabella, mentre un secondo controllo sia configurato per visualizzare solo le righe eliminate dalla classe DataTable. La classe DataTable è inoltre dotata di una proprietà DefaultView. Tale proprietà restituisce la classe DataView predefinita per la tabella. Se si desidera ad esempio creare una visualizzazione personalizzata della tabella, impostare la proprietà RowFilter sulla classe DataView restituita dalla proprietà DefaultView.
Per creare una visualizzazione filtrata e ordinata dei dati, impostare le proprietà RowFilter e Sort. Utilizzare quindi la proprietà Item per restituire una singola classe DataRowView.
È inoltre possibile eseguire operazioni di aggiunta ed eliminazione dal gruppo di righe con i metodi AddNew e Delete. Quando si utilizzano questi metodi, è possibile impostare la proprietà RowStateFilter per specificare che solo le righe eliminate o nuove vengano visualizzate dall'oggetto DataView.
Nota
|
|---|
|
Se non si specificano in modo esplicito i criteri di ordinamento per DataView, gli oggetti DataRowView in DataView verranno ordinati in base all'indice di DataRow corrispondente di DataView in DataTable.RowsDataRowCollection. |
LINQ to DataSet consente agli sviluppatori di creare query complesse e potenti su un oggetto DataSet utilizzando LINQ. Una query LINQ to DataSet restituisce un'enumerazione di oggetti DataRow che, tuttavia, non viene facilmente utilizzata in uno scenario di associazione. DataView può essere creato da una query LINQ to DataSet e può assumere le caratteristiche di filtraggio e ordinamento di tale query. LINQ to DataSet estende la funzionalità di DataView fornendo il filtraggio e l'ordinamento basati sull'espressione LINQ che consente operazioni più complesse e potenti rispetto alle operazioni corrispondenti basate su stringhe. Per ulteriori informazioni, vedere Associazione dati e LINQ to DataSet.
Nell'esempio seguente viene creato un singolo oggetto DataTable con una colonna e cinque righe. Vengono creati due oggetti DataView e la proprietà RowStateFilter viene impostata su ciascuno di essi per mostrare visualizzazioni differenti dei dati della tabella. I valori vengono quindi stampati.
Private Sub DemonstrateDataView() ' Create one DataTable with one column. Dim table As DataTable = New DataTable("table") Dim colItem As DataColumn = 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 DataView = New DataView(table) Dim secondView As DataView = 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
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.Rows[0]["item"]="cat"; table.Rows[1]["item"] = "dog"; table.AcceptChanges(); // 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" + 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("\table" + view[i]["item"]); } Console.WriteLine(); }
Nell'esempio seguente viene creato un oggetto DataView di ordini online ordinati in base al totale dovuto da una query LINQ to DataSet:
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
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;
.NET Framework
Supportato in: 4, 3.5, 3.0, 2.0, 1.1, 1.0.NET Framework Client Profile
Supportato in: 4, 3.5 SP1Windows 7, Windows Vista SP1 o versione successiva, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (componenti di base del server non supportati), Windows Server 2008 R2 (componenti di base del server supportati con SP1 o versione successiva), Windows Server 2003 SP2
.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Questo tipo può essere utilizzato nelle operazioni di lettura con multithreading. È necessario sincronizzare tutte le operazioni di scrittura.
Nota