DataView Klasse

Definition

Stellt eine an Daten bindbare, benutzerdefinierte Ansicht einer DataTable zum Sortieren, Filtern, Durchsuchen, Bearbeiten und Navigieren dar. DataView speichert keine Daten, sondern stellt stattdessen eine verbundene Ansicht der entsprechenden DataTable dar. Änderungen an den Daten von DataView wirken sich auf DataTable aus. Änderungen an den Daten von DataTable wirken sich auf alle DataView-Ansichten aus, die dieser zugeordnet sind.

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
type DataView = class
    inherit MarshalByValueComponent
    interface IBindingListView
    interface ITypedList
    interface ISupportInitializeNotification
    interface IBindingList
    interface IList
    interface ICollection
    interface IEnumerable
    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
Vererbung
Implementiert

Beispiele

Im folgenden Beispiel wird eine Einzelne DataTable mit einer Spalte und fünf Zeilen erstellt. Es werden zwei DataView Objekte erstellt, die RowStateFilter jeweils festgelegt sind, um unterschiedliche Ansichten der Tabellendaten anzuzeigen. Die Werte werden dann gedruckt.

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" + 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();
    }
}
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

Im folgenden Beispiel wird eine DataView Onlinebestellung erstellt, die von einer LINQ to DataSet Abfrage insgesamt bestellt wurde:

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

Hinweise

Eine wichtige Funktion besteht DataView darin, die Datenbindung sowohl für Windows Forms als auch für Web Forms zu ermöglichen.

Darüber hinaus kann eine DataView angepasst werden, um eine Teilmenge von Daten aus dem DataTable. Mit dieser Funktion können Sie zwei Steuerelemente an denselben DataTableGebundenen haben, jedoch verschiedene Versionen der Daten anzeigen. Ein Steuerelement kann beispielsweise an ein DataView Steuerelement gebunden sein, das alle Zeilen in der Tabelle anzeigt, und ein zweites Steuerelement kann so konfiguriert werden, dass nur die Zeilen angezeigt werden, die aus der DataTableTabelle gelöscht wurden. Das DataTable hat auch eine DefaultView Eigenschaft. Dadurch wird die Standardeinstellung DataView für die Tabelle zurückgegeben. Wenn Sie z. B. eine benutzerdefinierte Ansicht in der Tabelle erstellen möchten, legen Sie die RowFilter von DataView der DefaultViewTabelle zurückgegebene Ansicht fest.

Um eine gefilterte und sortierte Ansicht von Daten zu erstellen, legen Sie die und Sort die RowFilter Eigenschaften fest. Verwenden Sie dann die Item[] Eigenschaft, um eine einzelne DataRowViewzurückzugeben.

Sie können den Zeilensatz auch mithilfe AddNew der Methoden Delete hinzufügen und löschen. Wenn Sie diese Methoden verwenden, kann die RowStateFilter Eigenschaft festlegen, dass nur gelöschte Zeilen oder neue Zeilen von der DataView.

Hinweis

Wenn Sie nicht explizit Sortierkriterien DataViewfür angeben, werden die DataRowView objekte DataView in der entsprechenden Datenansicht anhand des Indexes der DataView DataRow sortiert DataTable.Rows DataRowCollection.

LINQ to DataSet ermöglicht Entwicklern das Erstellen komplexer, leistungsstarker Abfragen mithilfe DataSet von LINQ. Eine LINQ to DataSet Abfrage gibt jedoch eine Aufzählung von DataRow Objekten zurück, die in einem Bindungsszenario nicht einfach verwendet wird. DataViewkann aus einer LINQ to DataSet Abfrage erstellt und die Filter- und Sortiereigenschaften dieser Abfrage verwendet werden. LINQ to DataSet erweitert die Funktionalität der DataView Funktion durch die Bereitstellung von LINQ-ausdrucksbasierter Filterung und Sortierung, wodurch komplexere und leistungsfähigere Filter- und Sortiervorgänge als zeichenfolgenbasierte Filter- und Sortierungsvorgänge ermöglicht werden. Weitere Informationen finden Sie unter "Datenbindung" und "LINQ to DataSet".

Konstruktoren

DataView()

Initialisiert eine neue Instanz der DataView-Klasse.

DataView(DataTable)

Initialisiert eine neue Instanz der DataView-Klasse mit der angegebenen DataTable.

DataView(DataTable, String, String, DataViewRowState)

Initialisiert eine neue Instanz der DataView-Klasse mit den angegebenen DataTable, RowFilter, Sort und DataViewRowState.

Eigenschaften

AllowDelete

Ruft einen Wert ab, der angibt, ob Löschungen zulässig sind, oder legt diesen fest.

AllowEdit

Ruft einen Wert ab, der angibt, ob Bearbeitungen zulässig sind, oder legt diesen fest.

AllowNew

Ruft einen Wert ab, der angibt, ob die neuen Zeilen mithilfe der AddNew()-Methode hinzugefügt werden können, oder legt diesen fest.

ApplyDefaultSort

Ruft einen Wert ab, der angibt, ob die Standardsortierung verwendet werden soll, oder legt diesen Wert fest. Die Standardsortierung erfolgt nach allen Primärschlüsseln (in aufsteigender Reihenfolge), wie durch PrimaryKey angegeben.

Container

Ruft den Container für die Komponente ab.

(Geerbt von MarshalByValueComponent)
Count

Ruft die Anzahl der Datensätze in DataView ab, nachdem RowFilter und RowStateFilter angewendet wurden.

DataViewManager

Ruft den DataViewManager ab, der dieser Ansicht zugeordnet ist.

DesignMode

Ruft einen Wert ab, der angibt, ob sich die Komponente gegenwärtig im Entwurfsmodus befindet.

(Geerbt von MarshalByValueComponent)
Events

Ruft die Liste der an diese Komponente angefügten Ereignishandler ab.

(Geerbt von MarshalByValueComponent)
IsInitialized

Ruft einen Wert ab, der angibt, ob die Komponente initialisiert wurde.

IsOpen

Ruft einen Wert ab, der angibt, ob die Datenquelle aktuell geöffnet ist und Ansichten der Daten in der DataTable projiziert.

Item[Int32]

Ruft eine Datenzeile aus einer angegebenen Tabelle ab.

RowFilter

Ruft den Ausdruck ab, mit dem die in DataView anzuzeigenden Zeilen gefiltert werden, oder legt diesen fest.

RowStateFilter

Dient zum Abrufen oder Festlegen des Zeilenstatusfilters, der in der DataView verwendet wird.

Site

Ruft die Site der Komponente ab oder legt sie fest.

(Geerbt von MarshalByValueComponent)
Sort

Ruft die Sortierspalte(n) und die Sortierreihenfolge für die DataView ab oder legt sie fest.

Table

Ruft die Quell-DataTable ab oder legt sie fest.

Methoden

AddNew()

Fügt DataView eine neue Zeile hinzu.

BeginInit()

Startet die Initialisierung einer DataView, die in einem Formular oder von einer anderen Komponente verwendet wird. Die Initialisierung erfolgt zur Laufzeit.

Close()

Schließt die DataView-Klasse.

ColumnCollectionChanged(Object, CollectionChangeEventArgs)

Tritt auf, nachdem eine DataColumnCollection erfolgreich geändert wurde.

CopyTo(Array, Int32)

Kopiert die Elemente in ein Array. Nur für Web Forms-Schnittstellen.

Delete(Int32)

Löscht eine Zeile am angegebenen Index.

Dispose()

Gibt alle vom MarshalByValueComponent verwendeten Ressourcen frei.

(Geerbt von MarshalByValueComponent)
Dispose(Boolean)

Löscht (außer den Speicherressourcen) alle Ressourcen, die vom DataView-Objekt verwendet werden.

EndInit()

Beendet die Initialisierung einer DataView, die in einem Formular oder von einer anderen Komponente verwendet wird. Die Initialisierung erfolgt zur Laufzeit.

Equals(DataView)

Stellt fest, ob die angegebenen DataView-Instanzen als gleich betrachtet werden.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
Find(Object)

Sucht eine Zeile in der DataView anhand des angegebenen Sortierschlüsselwerts.

Find(Object[])

Sucht eine Zeile in der DataView anhand der angegebenen Sortierschlüsselwerte.

FindRows(Object)

Gibt ein Array von DataRowView-Objekten zurück, dessen Spalten dem angegebenen Sortierschlüsselwert entsprechen.

FindRows(Object[])

Gibt ein Array von DataRowView-Objekten zurück, dessen Spalten dem angegebenen Sortierschlüsselwert entsprechen.

GetEnumerator()

Ruft einen Enumerator für diese DataView ab.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetService(Type)

Ruft die Implementierung von IServiceProvider ab.

(Geerbt von MarshalByValueComponent)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
IndexListChanged(Object, ListChangedEventArgs)

Tritt auf, nachdem eine DataView erfolgreich geändert wurde.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
OnListChanged(ListChangedEventArgs)

Löst das ListChanged-Ereignis aus.

Open()

Öffnet eine DataView.

Reset()

Nur für die interne Verwendung vorgesehen.

ToString()

Gibt einen String zurück, der den Namen der Component enthält (sofern vorhanden). Diese Methode darf nicht überschrieben werden.

(Geerbt von MarshalByValueComponent)
ToTable()

Erstellt eine neue DataTable basierend auf den Zeilen in einer vorhandenen DataView und gibt diese zurück.

ToTable(Boolean, String[])

Erstellt eine neue DataTable basierend auf den Zeilen in einer vorhandenen DataView und gibt diese zurück.

ToTable(String)

Erstellt eine neue DataTable basierend auf den Zeilen in einer vorhandenen DataView und gibt diese zurück.

ToTable(String, Boolean, String[])

Erstellt eine neue DataTable basierend auf den Zeilen in einer vorhandenen DataView und gibt diese zurück.

UpdateIndex()

Nur für die interne Verwendung vorgesehen.

UpdateIndex(Boolean)

Nur für die interne Verwendung vorgesehen.

Ereignisse

Disposed

Fügt einen Ereignishandler hinzu, der auf das Disposed-Ereignis für die Komponente lauscht.

(Geerbt von MarshalByValueComponent)
Initialized

Tritt auf, wenn die Initialisierung von DataView abgeschlossen ist.

ListChanged

Tritt auf, wenn die von DataView verwaltete Liste geändert wird.

Explizite Schnittstellenimplementierungen

IBindingList.AddIndex(PropertyDescriptor)

Eine Beschreibung dieses Elements finden Sie unter AddIndex(PropertyDescriptor).

IBindingList.AddNew()

Eine Beschreibung dieses Elements finden Sie unter AddNew().

IBindingList.AllowEdit

Eine Beschreibung dieses Elements finden Sie unter AllowEdit.

IBindingList.AllowNew

Eine Beschreibung dieses Elements finden Sie unter AllowNew.

IBindingList.AllowRemove

Eine Beschreibung dieses Elements finden Sie unter AllowRemove.

IBindingList.ApplySort(PropertyDescriptor, ListSortDirection)

Eine Beschreibung dieses Elements finden Sie unter ApplySort(PropertyDescriptor, ListSortDirection).

IBindingList.Find(PropertyDescriptor, Object)

Eine Beschreibung dieses Elements finden Sie unter Find(PropertyDescriptor, Object).

IBindingList.IsSorted

Eine Beschreibung dieses Elements finden Sie unter IsSorted.

IBindingList.RemoveIndex(PropertyDescriptor)

Eine Beschreibung dieses Elements finden Sie unter RemoveIndex(PropertyDescriptor).

IBindingList.RemoveSort()

Eine Beschreibung dieses Elements finden Sie unter RemoveSort().

IBindingList.SortDirection

Eine Beschreibung dieses Elements finden Sie unter SortDirection.

IBindingList.SortProperty

Eine Beschreibung dieses Elements finden Sie unter SortProperty.

IBindingList.SupportsChangeNotification

Eine Beschreibung dieses Elements finden Sie unter SupportsChangeNotification.

IBindingList.SupportsSearching

Eine Beschreibung dieses Elements finden Sie unter SupportsSearching.

IBindingList.SupportsSorting

Eine Beschreibung dieses Elements finden Sie unter SupportsSorting.

IBindingListView.ApplySort(ListSortDescriptionCollection)

Eine Beschreibung dieses Elements finden Sie unter ApplySort(ListSortDescriptionCollection).

IBindingListView.Filter

Eine Beschreibung dieses Elements finden Sie unter Filter.

IBindingListView.RemoveFilter()

Eine Beschreibung dieses Elements finden Sie unter RemoveFilter().

IBindingListView.SortDescriptions

Eine Beschreibung dieses Elements finden Sie unter SortDescriptions.

IBindingListView.SupportsAdvancedSorting

Eine Beschreibung dieses Elements finden Sie unter SupportsAdvancedSorting.

IBindingListView.SupportsFiltering

Eine Beschreibung dieses Elements finden Sie unter SupportsFiltering.

ICollection.IsSynchronized

Eine Beschreibung dieses Elements finden Sie unter IsSynchronized.

ICollection.SyncRoot

Eine Beschreibung dieses Elements finden Sie unter SyncRoot.

IList.Add(Object)

Eine Beschreibung dieses Elements finden Sie unter Add(Object).

IList.Clear()

Eine Beschreibung dieses Elements finden Sie unter Clear().

IList.Contains(Object)

Eine Beschreibung dieses Elements finden Sie unter Contains(Object).

IList.IndexOf(Object)

Eine Beschreibung dieses Elements finden Sie unter IndexOf(Object).

IList.Insert(Int32, Object)

Eine Beschreibung dieses Elements finden Sie unter Insert(Int32, Object).

IList.IsFixedSize

Eine Beschreibung dieses Elements finden Sie unter IsFixedSize.

IList.IsReadOnly

Eine Beschreibung dieses Elements finden Sie unter IsReadOnly.

IList.Item[Int32]

Eine Beschreibung dieses Elements finden Sie unter Item[Int32].

IList.Remove(Object)

Eine Beschreibung dieses Elements finden Sie unter Remove(Object).

IList.RemoveAt(Int32)

Eine Beschreibung dieses Elements finden Sie unter RemoveAt(Int32).

ITypedList.GetItemProperties(PropertyDescriptor[])

Eine Beschreibung dieses Elements finden Sie unter GetItemProperties(PropertyDescriptor[]).

ITypedList.GetListName(PropertyDescriptor[])

Eine Beschreibung dieses Elements finden Sie unter GetListName(PropertyDescriptor[]).

Erweiterungsmethoden

Cast<TResult>(IEnumerable)

Wandelt die Elemente eines IEnumerable in den angegebenen Typ um

OfType<TResult>(IEnumerable)

Filtert die Elemente eines IEnumerable anhand eines angegebenen Typs

AsParallel(IEnumerable)

Ermöglicht die Parallelisierung einer Abfrage.

AsQueryable(IEnumerable)

Konvertiert einen IEnumerable in einen IQueryable.

Gilt für:

Threadsicherheit

Dieser Typ ist für Multithread-Lesevorgänge sicher. Sie müssen alle Schreibvorgänge synchronisieren.

Siehe auch