Freigeben über


DataView Klasse

Definition

Stellt eine datenbindierbare, angepasste Ansicht einer DataTable für Sortierung, Filterung, Suche, Bearbeitung und Navigation vorgesehenen Ansicht dar. Die DataView Daten werden nicht gespeichert, sondern stellt stattdessen eine verbundene Ansicht der entsprechenden DataTableDaten dar. Änderungen an den DataViewDaten der Daten wirken sich auf die DataTable. Änderungen an den DataTableDaten der Daten wirken sich auf alle DataViewdamit verbundenen Daten aus.

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
Vererbung
Implementiert

Beispiele

Im folgenden Beispiel wird ein einzelnes DataTable Mit einer Spalte und fünf Zeilen erstellt. Es werden zwei DataView Objekte erstellt, die RowStateFilter jeweils so festgelegt sind, dass unterschiedliche Ansichten der Tabellendaten angezeigt werden. 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.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

Im folgenden Beispiel wird eine DataView Von Onlinebestellungen erstellt, die nach Gesamtsumme von einer LINQ to DataSet-Abfrage sortiert wurden:

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 in Windows Forms als auch in Web Forms zu ermöglichen.

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

Um eine gefilterte und sortierte Ansicht der Daten zu erstellen, legen Sie die RowFilter Daten und Sort 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 festgelegt werden, um anzugeben, dass nur gelöschte Zeilen oder neue Zeilen von der DataView.

Anmerkung

Wenn Sie keine expliziten Sortierkriterien DataViewangeben, werden die DataRowView Objekte in DataView der Auflistung basierend auf dem Index der entsprechenden DataRowDataTable.RowsDataRowCollectionDatenansicht sortiert.

LINQ to DataSet ermöglicht Es Entwicklern, komplexe, leistungsstarke Abfragen mithilfe DataSet von LINQ zu erstellen. Eine LINQ to DataSet-Abfrage gibt jedoch eine Aufzählung von DataRow Objekten zurück, die in einem Bindungsszenario nicht einfach verwendet wird. DataView kann aus einer LINQ to DataSet-Abfrage erstellt werden und übernimmt die Filter- und Sortiereigenschaften dieser Abfrage. LINQ to DataSet erweitert die Funktionalität des DataView durch LINQ-Ausdrücke für das Filtern und Sortieren, was weitaus komplexere und leistungsfähigere Filter- und Sortieroperationen als bei zeichenfolgenbasierten Verfahren ermöglicht. Weitere Informationen finden Sie unter "Datenbindung" und "LINQ to DataSet ".

Konstruktoren

Name Beschreibung
DataView()

Initialisiert eine neue Instanz der DataView-Klasse.

DataView(DataTable, String, String, DataViewRowState)

Initialisiert eine neue Instanz der DataView Klasse mit dem angegebenen DataTable, , RowFilter, , Sortund DataViewRowState.

DataView(DataTable)

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

Eigenschaften

Name Beschreibung
AllowDelete

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob Löschvorgang zulässig ist.

AllowEdit

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob Bearbeitungen zulässig sind.

AllowNew

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob die neuen Zeilen mithilfe der AddNew() Methode hinzugefügt werden können.

ApplyDefaultSort

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob die Standardsortierung verwendet werden soll. Die Standardsortierung ist (aufsteigend) nach allen Primärschlüsseln wie angegeben.PrimaryKey

Container

Ruft den Container für die Komponente ab.

(Geerbt von MarshalByValueComponent)
Count

Ruft die Anzahl der Datensätze im DataView Anschluss RowFilter ab und RowStateFilter wurde angewendet.

DataViewManager

Ruft die DataViewManager dieser Ansicht zugeordnete ab.

DesignMode

Ruft einen Wert ab, der angibt, ob sich die Komponente derzeit im Entwurfsmodus befindet.

(Geerbt von MarshalByValueComponent)
Events

Ruft die Liste der Ereignishandler ab, die an diese Komponente angefügt sind.

(Geerbt von MarshalByValueComponent)
IsInitialized

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

IsOpen

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

Item[Int32]

Ruft eine Datenzeile aus einer angegebenen Tabelle ab.

RowFilter

Dient zum Abrufen oder Festlegen des Ausdrucks, der zum Filtern verwendet wird, welche Zeilen in der DataView.

RowStateFilter

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

Site

Dient zum Abrufen oder Festlegen der Website der Komponente.

(Geerbt von MarshalByValueComponent)
Sort

Dient zum Abrufen oder Festlegen der Sortierspalte oder Spalten und der Sortierreihenfolge für die DataView.

Table

Ruft die Quelle DataTableab oder legt sie fest.

Methoden

Name Beschreibung
AddNew()

Fügt der DataViewZeile eine neue Zeile hinzu.

BeginInit()

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

Close()

Schließt die DataView.

ColumnCollectionChanged(Object, CollectionChangeEventArgs)

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

CopyTo(Array, Int32)

Kopiert Elemente in ein Array. Nur für Webformularschnittstellen.

Delete(Int32)

Löscht eine Zeile am angegebenen Index.

Dispose()

Veröffentlicht alle ressourcen, die von der MarshalByValueComponent.

(Geerbt von MarshalByValueComponent)
Dispose(Boolean)

Entfernt die vom Objekt verwendeten DataView Ressourcen (außer Speicher).

EndInit()

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

Equals(DataView)

Bestimmt, ob die angegebenen DataView Instanzen gleich sind.

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
Find(Object)

Sucht eine Zeile im DataView durch den angegebenen Sortierschlüsselwert.

Find(Object[])

Sucht eine Zeile in der DataView durch die angegebenen Sortierschlüsselwerte.

FindRows(Object)

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

FindRows(Object[])

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

GetEnumerator()

Ruft einen Enumerator für dies DataViewab.

GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetService(Type)

Ruft den Implementierer der IServiceProvider.

(Geerbt von MarshalByValueComponent)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
IndexListChanged(Object, ListChangedEventArgs)

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

MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
OnListChanged(ListChangedEventArgs)

Löst das ListChanged-Ereignis aus.

Open()

Öffnet ein DataView.

Reset()

Nur für die interne Verwendung reserviert.

ToString()

Gibt einen String mit dem Namen des Component, falls vorhanden, zurück. Diese Methode sollte nicht außer Kraft gesetzt werden.

(Geerbt von MarshalByValueComponent)
ToTable()

Erstellt und gibt eine neue DataTable basierend auf Zeilen in einer vorhandenen DataViewzurück.

ToTable(Boolean, String[])

Erstellt und gibt eine neue DataTable basierend auf Zeilen in einer vorhandenen DataViewzurück.

ToTable(String, Boolean, String[])

Erstellt und gibt eine neue DataTable basierend auf Zeilen in einer vorhandenen DataViewzurück.

ToTable(String)

Erstellt und gibt eine neue DataTable basierend auf Zeilen in einer vorhandenen DataViewzurück.

UpdateIndex()

Nur für die interne Verwendung reserviert.

UpdateIndex(Boolean)

Nur für die interne Verwendung reserviert.

Ereignisse

Name Beschreibung
Disposed

Fügt einen Ereignishandler hinzu, um auf das Ereignis in der Disposed Komponente zu lauschen.

(Geerbt von MarshalByValueComponent)
Initialized

Tritt auf, wenn die Initialisierung des Vorgangs DataView abgeschlossen ist.

ListChanged

Tritt auf, wenn die von den DataView Änderungen verwaltete Liste.

Explizite Schnittstellenimplementierungen

Name Beschreibung
IBindingList.AddIndex(PropertyDescriptor)

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

IBindingList.AddNew()

Eine Beschreibung dieses Mitglieds finden Sie unter AddNew().

IBindingList.AllowEdit

Eine Beschreibung dieses Mitglieds finden Sie unter AllowEdit.

IBindingList.AllowNew

Eine Beschreibung dieses Mitglieds finden Sie unter AllowNew.

IBindingList.AllowRemove

Eine Beschreibung dieses Mitglieds finden Sie unter AllowRemove.

IBindingList.ApplySort(PropertyDescriptor, ListSortDirection)

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

IBindingList.Find(PropertyDescriptor, Object)

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

IBindingList.IsSorted

Eine Beschreibung dieses Mitglieds finden Sie unter IsSorted.

IBindingList.RemoveIndex(PropertyDescriptor)

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

IBindingList.RemoveSort()

Eine Beschreibung dieses Mitglieds finden Sie unter RemoveSort().

IBindingList.SortDirection

Eine Beschreibung dieses Mitglieds finden Sie unter SortDirection.

IBindingList.SortProperty

Eine Beschreibung dieses Mitglieds finden Sie unter SortProperty.

IBindingList.SupportsChangeNotification

Eine Beschreibung dieses Mitglieds finden Sie unter SupportsChangeNotification.

IBindingList.SupportsSearching

Eine Beschreibung dieses Mitglieds finden Sie unter SupportsSearching.

IBindingList.SupportsSorting

Eine Beschreibung dieses Mitglieds finden Sie unter SupportsSorting.

IBindingListView.ApplySort(ListSortDescriptionCollection)

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

IBindingListView.Filter

Eine Beschreibung dieses Mitglieds finden Sie unter Filter.

IBindingListView.RemoveFilter()

Eine Beschreibung dieses Mitglieds finden Sie unter RemoveFilter().

IBindingListView.SortDescriptions

Eine Beschreibung dieses Mitglieds finden Sie unter SortDescriptions.

IBindingListView.SupportsAdvancedSorting

Eine Beschreibung dieses Mitglieds finden Sie unter SupportsAdvancedSorting.

IBindingListView.SupportsFiltering

Eine Beschreibung dieses Mitglieds finden Sie unter SupportsFiltering.

ICollection.IsSynchronized

Eine Beschreibung dieses Mitglieds finden Sie unter IsSynchronized.

ICollection.SyncRoot

Eine Beschreibung dieses Mitglieds finden Sie unter SyncRoot.

IList.Add(Object)

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

IList.Clear()

Eine Beschreibung dieses Mitglieds finden Sie unter Clear().

IList.Contains(Object)

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

IList.IndexOf(Object)

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

IList.Insert(Int32, Object)

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

IList.IsFixedSize

Eine Beschreibung dieses Mitglieds finden Sie unter IsFixedSize.

IList.IsReadOnly

Eine Beschreibung dieses Mitglieds finden Sie unter IsReadOnly.

IList.Item[Int32]

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

IList.Remove(Object)

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

IList.RemoveAt(Int32)

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

ITypedList.GetItemProperties(PropertyDescriptor[])

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

ITypedList.GetListName(PropertyDescriptor[])

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

Erweiterungsmethoden

Name Beschreibung
AsParallel(IEnumerable)

Aktiviert die Parallelisierung einer Abfrage.

AsQueryable(IEnumerable)

Wandelt eine IEnumerable in eine IQueryableum.

Cast<TResult>(IEnumerable)

Wandelt die Elemente eines IEnumerable in den angegebenen Typ um.

OfType<TResult>(IEnumerable)

Filtert die Elemente einer IEnumerable basierend auf einem angegebenen Typ.

Gilt für:

Threadsicherheit

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

Weitere Informationen