DataView Classe

Definizione

Rappresenta una visualizzazione personalizzata e disponibile per il data binding di un oggetto DataTable per l'ordinamento, il filtraggio, la ricerca, la modifica e l'esplorazione. L'oggetto DataView non memorizza dati ma rappresenta una visualizzazione connessa dell'oggetto DataTable corrispondente. Le modifiche ai dati dell'oggetto DataView influiscono sull'oggetto DataTable. Le modifiche ai dati dell'oggetto DataTable influiscono su tutti gli oggetti DataView associati ad esso.

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 viene RowStateFilter 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 è quella di DataView consentire il data binding sia in Windows Forms che in Web Forms.

Inoltre, un DataView oggetto può essere personalizzato per presentare un subset di dati da 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 oggetto che mostra tutte le righe della tabella e un secondo potrebbe essere configurato per visualizzare solo le righe eliminate da DataTable. Dispone DataTable anche di una DefaultView proprietà . Restituisce l'impostazione predefinita DataView per la tabella. Ad esempio, se si vuole creare una vista personalizzata nella tabella, impostare l'oggetto RowFilter sull'oggetto DataView restituito da DefaultView.

Per creare una visualizzazione 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 usano 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 un'enumerazione di DataRow oggetti, tuttavia, che non viene usata facilmente in uno scenario di associazione. DataViewpuò 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 a filtri e 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 l'oggetto DataTable specificato.

DataView(DataTable, String, String, DataViewRowState)

Inizializza una nuova istanza della classe DataView con gli oggetti DataTable, RowFilter, Sort e DataViewRowState specificati.

Proprietà

AllowDelete

Ottiene o imposta un valore che indica se sono consentite le eliminazioni.

AllowEdit

Ottiene o imposta un valore che indica se sono consentite le 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 usare l'ordinamento predefinito. L'ordinamento predefinito è (ascendente) in base a tutte le chiavi primarie come specificato da PrimaryKey.

Container

Ottiene il contenitore del componente.

(Ereditato da MarshalByValueComponent)
Count

Ottiene il numero di record nell'oggetto DataView dopo l'applicazione di 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 è stato inizializzato.

IsOpen

Ottiene un valore che indica se l'origine dati è attualmente aperta e proietta visualizzazioni dei dati in DataTable.

Item[Int32]

Ottiene una riga di dati da una tabella specificata.

RowFilter

Ottiene o imposta l'espressione usata per filtrare le righe da visualizzare nell'oggetto DataView.

RowStateFilter

Ottiene o imposta il filtro di stato della riga usato nell'oggetto DataView.

Site

Ottiene o imposta il sito del componente.

(Ereditato da MarshalByValueComponent)
Sort

Ottiene o imposta la colonna o le colonne e l'ordinamento per l'oggetto DataView.

Table

Ottiene o imposta l'origine DataTable.

Metodi

AddNew()

Aggiunge una nuova riga all'oggetto DataView.

BeginInit()

Avvia l'inizializzazione di un oggetto DataView usato su un form o da un altro componente. L'inizializzazione avviene in fase di esecuzione.

Close()

Chiude l'oggetto DataView.

ColumnCollectionChanged(Object, CollectionChangeEventArgs)

Si verifica dopo la modifica di un oggetto DataColumnCollection.

CopyTo(Array, Int32)

Copia gli elementi in una matrice. Solo per le interfacce di 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 usate dall'oggetto DataView, tranne la memoria.

EndInit()

Termina l'inizializzazione di una classe DataView usata 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 specificato è uguale all'oggetto corrente.

(Ereditato da Object)
Find(Object)

Trova una riga in DataView in base al valore di chiave di ordinamento specificato.

Find(Object[])

Trova una riga nell'oggetto DataView in base ai valori delle chiavi 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 oggetto DataView.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetService(Type)

Ottiene l'implementatore dell'interfaccia IServiceProvider.

(Ereditato da MarshalByValueComponent)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
IndexListChanged(Object, ListChangedEventArgs)

Si verifica dopo la modifica di un oggetto DataView.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
OnListChanged(ListChangedEventArgs)

Genera l'evento ListChanged.

Open()

Apre un oggetto DataView.

Reset()

Riservato esclusivamente per uso interno.

ToString()

Restituisce un oggetto String che contiene il nome dell'eventuale oggetto Component. Questo metodo non deve essere sottoposto a override.

(Ereditato da MarshalByValueComponent)
ToTable()

Crea e restituisce un nuovo oggetto DataTable in base alle righe in un oggetto DataView esistente.

ToTable(Boolean, String[])

Crea e restituisce un nuovo oggetto DataTable in base alle righe in un oggetto DataView esistente.

ToTable(String)

Crea e restituisce un nuovo oggetto DataTable in base alle righe in un oggetto DataView esistente.

ToTable(String, Boolean, String[])

Crea e restituisce un nuovo oggetto DataTable in base alle righe in un oggetto DataView esistente.

UpdateIndex()

Riservato esclusivamente per uso interno.

UpdateIndex(Boolean)

Riservato esclusivamente per uso interno.

Eventi

Disposed

Aggiunge un gestore evento per restare in attesa dell'evento Disposed sul componente.

(Ereditato da MarshalByValueComponent)
Initialized

Si verifica quando l'inizializzazione dell'oggetto DataView viene completata.

ListChanged

Si verifica quando l'elenco gestito dall'oggetto 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

Cast<TResult>(IEnumerable)

Esegue il cast degli elementi di un oggetto IEnumerable nel tipo specificato.

OfType<TResult>(IEnumerable)

Filtra gli elementi di un oggetto IEnumerable in base a un tipo specificato.

AsParallel(IEnumerable)

Consente la parallelizzazione di una query.

AsQueryable(IEnumerable)

Converte un oggetto IEnumerable in un oggetto IQueryable.

Si applica a

Thread safety

Questo tipo è sicuro per le operazioni di lettura multithreading. È necessario sincronizzare tutte le operazioni di scrittura.

Vedi anche