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 oggetto per l'ordinamento, il filtro, la ricerca, la modifica e la navigazione. Non DataView archivia i dati, ma rappresenta invece una visualizzazione connessa del corrispondente DataTableoggetto . Le modifiche apportate ai DataViewdati di influiranno sull'oggetto DataTable. Le modifiche apportate ai DataTabledati dell'oggetto influiscono su tutti i DataViewdati associati.
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 creato un singolo DataTable oggetto con una colonna e cinque righe. Vengono creati due DataView oggetti e l'oggetto RowStateFilter viene impostato su ognuno 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 oggetto 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 di è DataView consentire il data binding sia in Windows Form che in Web Form.
Inoltre, è possibile personalizzare un oggetto DataView per presentare un subset di dati da DataTable. Questa funzionalità consente di avere due controlli associati allo stesso DataTableoggetto , ma che mostrano versioni diverse dei dati. Ad esempio, un controllo potrebbe essere associato a un DataView oggetto che mostra tutte le righe della tabella e un secondo potrebbe essere configurato per visualizzare solo le righe eliminate da DataTable. L'oggetto DataTable dispone anche di una DefaultView proprietà . Viene restituito il valore predefinito DataView per la tabella. Ad esempio, se si desidera creare una vista personalizzata nella tabella, impostare l'oggetto sull'oggetto RowFilterDataView restituito da DefaultView.
Per creare una vista filtrata e ordinata dei dati, impostare le RowFilter proprietà e Sort . Usare quindi la Item[] proprietà per restituire un singolo DataRowViewoggetto .
È anche possibile aggiungere ed eliminare dal set di righe usando i AddNew metodi e Delete . Quando si utilizzano questi metodi, la RowStateFilter proprietà può impostare per specificare che solo le righe eliminate o le nuove righe vengono visualizzate da DataView.
Nota
Se non si specificano in modo esplicito i criteri di ordinamento per DataView, gli DataRowView oggetti in DataView vengono ordinati in base all'indice di DataView corrispondente DataRow in DataTable.RowsDataRowCollection.
LINQ to DataSet consente agli sviluppatori di creare query complesse e potenti tramite DataSet LINQ. Una query LINQ to DataSet restituisce tuttavia un'enumerazione di DataRow oggetti, che non viene usata facilmente in uno scenario di associazione. DataView può essere creato da una query LINQ to DataSet e accetta le caratteristiche di filtro e ordinamento di tale query. LINQ to DataSet estende la funzionalità di 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
| Nome | Descrizione |
|---|---|
| DataView() |
Inizializza una nuova istanza della classe DataView. |
| DataView(DataTable, String, String, DataViewRowState) |
Inizializza una nuova istanza della DataView classe con l'oggetto , RowFilter, Sorte DataViewRowStatespecificatoDataTable. |
| DataView(DataTable) |
Inizializza una nuova istanza della DataView classe con l'oggetto specificato DataTable. |
Proprietà
| Nome | Descrizione |
|---|---|
| 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 AddNew() metodo . |
| ApplyDefaultSort |
Ottiene o imposta un valore che indica se utilizzare l'ordinamento predefinito. L'ordinamento predefinito è (crescente) di tutte le chiavi primarie come specificato da PrimaryKey. |
| Container |
Ottiene il contenitore per il componente. (Ereditato da MarshalByValueComponent) |
| Count |
Ottiene il numero di record nel DataView dopo RowFilter e RowStateFilter sono stati applicati. |
| DataViewManager |
Ottiene l'oggetto 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 nell'oggetto DataTable. |
| Item[Int32] |
Ottiene una riga di dati da una tabella specificata. |
| RowFilter |
Ottiene o imposta l'espressione utilizzata per filtrare le righe visualizzate 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 la colonna o le colonne di ordinamento e l'ordinamento per .DataView |
| Table |
Ottiene o imposta l'origine DataTable. |
Metodi
| Nome | Descrizione |
|---|---|
| AddNew() |
Aggiunge una nuova riga all'oggetto DataView. |
| BeginInit() |
Avvia l'inizializzazione di un DataView oggetto utilizzato in una maschera o utilizzato da un altro componente. L'inizializzazione viene eseguita in fase di esecuzione. |
| Close() |
Chiude l'oggetto DataView. |
| ColumnCollectionChanged(Object, CollectionChangeEventArgs) |
Si verifica dopo che un oggetto 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 da MarshalByValueComponent. (Ereditato da MarshalByValueComponent) |
| Dispose(Boolean) |
Elimina le risorse (diverse dalla memoria) usate dall'oggetto DataView . |
| EndInit() |
Termina l'inizializzazione di un DataView oggetto utilizzato in una maschera o utilizzato da un altro componente. L'inizializzazione viene eseguita in fase di esecuzione. |
| Equals(DataView) |
Determina se le istanze specificate DataView sono considerate uguali. |
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| Find(Object) |
Trova una riga nell'oggetto DataView in base al valore della 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 le cui colonne corrispondono al valore della chiave di DataRowView ordinamento specificato. |
| FindRows(Object[]) |
Restituisce una matrice di oggetti le cui colonne corrispondono al valore della chiave di DataRowView ordinamento specificato. |
| GetEnumerator() |
Ottiene un enumeratore per l'oggetto DataView. |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetService(Type) |
Ottiene l'implementatore dell'oggetto IServiceProvider. (Ereditato da MarshalByValueComponent) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| IndexListChanged(Object, ListChangedEventArgs) |
Si verifica dopo che un oggetto DataView è stato modificato correttamente. |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| OnListChanged(ListChangedEventArgs) |
Genera l'evento ListChanged. |
| Open() |
Apre un oggetto DataView. |
| Reset() |
Riservato solo per uso interno. |
| ToString() |
Restituisce un oggetto String contenente il nome dell'oggetto Component, se presente. Questo metodo non deve essere sottoposto a override. (Ereditato da MarshalByValueComponent) |
| ToTable() |
Crea e restituisce un nuovo DataTable oggetto in base alle righe di un oggetto esistente DataView. |
| ToTable(Boolean, String[]) |
Crea e restituisce un nuovo DataTable oggetto in base alle righe di un oggetto esistente DataView. |
| ToTable(String, Boolean, String[]) |
Crea e restituisce un nuovo DataTable oggetto in base alle righe di un oggetto esistente DataView. |
| ToTable(String) |
Crea e restituisce un nuovo DataTable oggetto in base alle righe di un oggetto esistente DataView. |
| UpdateIndex() |
Riservato solo per uso interno. |
| UpdateIndex(Boolean) |
Riservato solo per uso interno. |
Eventi
| Nome | Descrizione |
|---|---|
| Disposed |
Aggiunge un gestore eventi per restare in ascolto dell'evento Disposed nel componente. (Ereditato da MarshalByValueComponent) |
| Initialized |
Si verifica al termine dell'inizializzazione DataView di . |
| ListChanged |
Si verifica quando l'elenco gestito dalle DataView modifiche. |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| 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
| Nome | Descrizione |
|---|---|
| AsParallel(IEnumerable) |
Abilita la parallelizzazione di una query. |
| AsQueryable(IEnumerable) |
Converte un IEnumerable in un IQueryable. |
| 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. |
Si applica a
Thread safety
Questo tipo è sicuro per le operazioni di lettura multithreading. È necessario sincronizzare tutte le operazioni di scrittura.