Sortieren und Filtern von Daten (ADO.NET)
Die DataView stellt mehrere Methoden zum Sortieren und Filtern von Daten in einer DataTable bereit:
Mit der Sort-Eigenschaft können Sie einzelne oder mehrere Sortierreihenfolgen für Spalten angeben und die Parameter ASC (ascending = aufsteigend) und DESC (descending = absteigend) einfügen.
Sie können mithilfe der ApplyDefaultSort-Eigenschaft automatisch eine Sortierreihenfolge in aufsteigender Reihenfolge auf Grundlage der Primärschlüsselspalte bzw. -spalten der Tabelle erstellen. ApplyDefaultSort ist nur gültig, wenn die Sort-Eigenschaft ein NULL-Verweis oder eine leere Zeichenfolge ist für die Tabelle ein Primärschlüssel definiert ist.
Mit der RowFilter-Eigenschaft können Sie Teilmengen von Zeilen angeben, die auf den Spaltenwerten basieren. Ausführliche Informationen zu gültigen Ausdrücken für die RowFilter-Eigenschaft finden Sie in den Referenzinformationen für die Expression-Eigenschaft der DataColumn-Klasse.
Wenn Sie die Ergebnisse einer bestimmten Abfrage von Daten zurückgeben möchten, anstatt eine dynamische Ansicht von einer Teilmenge von Daten zu erhalten, verwenden Sie die Find-Methode oder die FindRows-Methode der DataView, denn sie sind für diesen Zweck besser geeignet als die RowFilter-Eigenschaft. Wenn Sie die RowFilter-Eigenschaft festlegen, wird der Index für die Daten neu erstellt, wodurch zusätzlicher Verwaltungsmehraufwand für die Anwendung entsteht und die Leistung verringert wird. Die RowFilter-Eigenschaft wird am besten in einer datengebundenen Anwendung verwendet, in der ein gebundenes Steuerelement gefilterte Ergebnisse anzeigt. Die Methoden Find und FindRows nutzen den aktuellen Index, ohne dass der Index neu erstellt werden muss. Weitere Informationen zu den Methoden Find und FindRows finden Sie unter Suchen nach Zeilen (ADO.NET).
Mit der RowStateFilter-Eigenschaft können Sie festlegen, welche Zeilenversionen Sie anzeigen möchten. Die DataView verwaltet implizit, welche Zeilenversion, abhängig vom RowState der zugrunde liegenden Zeile, verfügbar gemacht werden soll. Wenn z. B. der RowStateFilter auf DataViewRowState.Deleted festgelegt ist, macht die DataView die Original-Zeilenversion aller Deleted-Zeilen verfügbar, da keine Current-Zeilenversion vorliegt. Mit der RowVersion-Eigenschaft der DataRowView können Sie bestimmen, welche Zeilenversion einer Zeile verfügbar gemacht wird.
In der folgenden Tabelle sind die Optionen für DataViewRowState enthalten.
"DataViewRowState"-Optionen
Beschreibung
CurrentRows
Die Current-Zeilenversion von allen Zeilen mit dem Status Unchanged, Added und Modified. Dies ist die Standardeinstellung.
Added
Die Current-Zeilenversion von allen Added-Zeilen.
Deleted
Die Original-Zeilenversion von allen Deleted-Zeilen.
ModifiedCurrent
Die Current-Zeilenversion von allen Modified-Zeilen.
ModifiedOriginal
Die Original-Zeilenversion von allen Modified-Zeilen.
None
Keine Zeilen.
OriginalRows
Die Original-Zeilenversion von allen Zeilen mit dem Status Unchanged, Modified und Deleted.
Unchanged
Die Current-Zeilenversion von allen Unchanged-Zeilen.
Weitere Informationen zu Zeilenzuständen und Zeilenversionen finden Sie unter Zeilenstatus und Zeilenversion.
Im folgenden Codebeispiel wird eine Ansicht erstellt, die alle Produkte anzeigt, bei denen die Anzahl der Einheiten im Lager kleiner als oder gleich der Neusortierungsebene ist, wobei zuerst nach der Lieferanten-ID und dann nach dem Produktnamen sortiert wird.
Dim prodView As DataView = New DataView(prodDS.Tables("Products"), _
"UnitsInStock <= ReorderLevel", _
"SupplierID, ProductName", _
DataViewRowState.CurrentRows)
DataView prodView = new DataView(prodDS.Tables["Products"],
"UnitsInStock <= ReorderLevel",
"SupplierID, ProductName",
DataViewRowState.CurrentRows);