Condividi tramite


DataView Classe

Definizione

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.RowsDataRowCollection.

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 T dal IServiceProvider.

GetKeyedServices(IServiceProvider, Type, Object)

Ottiene un'enumerazione dei servizi di tipo serviceType dal IServiceProvider.

GetKeyedServices<T>(IServiceProvider, Object)

Ottiene un'enumerazione dei servizi di tipo T dal IServiceProvider.

GetRequiredKeyedService(IServiceProvider, Type, Object)

Ottiene un servizio di tipo serviceType dal IServiceProvider.

GetRequiredKeyedService<T>(IServiceProvider, Object)

Ottiene un servizio di tipo T dal IServiceProvider.

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 serviceType dal IServiceProvider.

GetRequiredService<T>(IServiceProvider)

Ottenere il servizio di tipo T dal IServiceProvider.

GetService<T>(IServiceProvider)

Ottenere il servizio di tipo T dal IServiceProvider.

GetServices(IServiceProvider, Type)

Ottenere un'enumerazione dei servizi di tipo serviceType dal IServiceProvider.

GetServices<T>(IServiceProvider)

Ottenere un'enumerazione dei servizi di tipo T dal IServiceProvider.

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