Freigeben über


Anzeigen von Daten in einer DataTable

Sie können auf den Inhalt eines Elements DataTable zugreifen, indem Sie die Zeilen- und Spaltenauflistungen der DataTable verwenden. Sie können die Select Methode auch verwenden, um Teilmengen der Daten in einer DataTable gemäß Kriterien wie Suchkriterien, Sortierreihenfolge und Zeilenstatus zurückzugeben. Darüber hinaus können Sie die Find Methode der DataRowCollection verwenden, wenn Sie mithilfe eines Primärschlüsselwerts nach einer bestimmten Zeile suchen.

Die Select-Methode des DataTable-Objekts gibt eine Gruppe von DataRow Objekten zurück, die den angegebenen Kriterien entsprechen. Select verwendet optionale Argumente eines Filterausdrucks, sortierausdrucks und DataViewRowState. Der Filterausdruck gibt an, welche Zeilen basierend auf DataColumn-Werten zurückgegeben werden sollen, zum Beispiel LastName = 'Smith'. Der Sortierausdruck folgt standardmäßigen SQL-Konventionen zum Sortieren von Spalten, z. B LastName ASC, FirstName ASC. . Regeln zum Schreiben von Ausdrücken finden Sie in der Expression Eigenschaft der DataColumn-Klasse .

Tipp

Wenn Sie eine Reihe von Aufrufen der Select-Methode einer DataTable ausführen, können Sie die Leistung erhöhen, indem Sie zuerst eine DataView für die DataTable erstellen. Beim Erstellen der DataView werden die Zeilen der Tabelle indiziert. Die Select-Methode verwendet dann diesen Index, wodurch die Zeit zum Generieren des Abfrageergebnisses erheblich reduziert wird. Informationen zum Erstellen einer DataView für eine DataTable finden Sie unter DataViews.

Die Select-Methode bestimmt, welche Version der Zeilen angezeigt oder bearbeitet werden soll, basierend auf einem DataViewRowState. In der folgenden Tabelle werden die möglichen DataViewRowState-Enumerationswerte beschrieben.

"DataViewRowState"-Wert BESCHREIBUNG
CurrentRows Aktuelle Zeilen einschließlich unveränderter, hinzugefügter und geänderter Zeilen.
Gelöscht Eine gelöschte Zeile.
ModifiedCurrent Eine aktuelle Version, bei der es sich um eine geänderte Version von Originaldaten handelt. (Siehe ModifiedOriginal.)
ModifiedOriginal Die ursprüngliche Version aller geänderten Zeilen. Die aktuelle Version ist mit ModifiedCurrent verfügbar.
Hinzugefügt Eine neue Zeile.
Nichts Keiner.
OriginalRows Ursprüngliche Zeilen, einschließlich unveränderter und gelöschter Zeilen.
Unverändert Eine nicht geänderte Zeile.

Im folgenden Beispiel wird das DataSet-Objekt so gefiltert, dass Sie nur mit Zeilen arbeiten, deren DataViewRowState auf CurrentRows festgelegt ist.

Dim column As DataColumn
Dim row As DataRow

Dim currentRows() As DataRow = _
    workTable.Select(Nothing, Nothing, DataViewRowState.CurrentRows)

If (currentRows.Length < 1 ) Then
  Console.WriteLine("No Current Rows Found")
Else
  For Each column in workTable.Columns
    Console.Write(vbTab & column.ColumnName)
  Next

  Console.WriteLine(vbTab & "RowState")

  For Each row In currentRows
    For Each column In workTable.Columns
      Console.Write(vbTab & row(column).ToString())
    Next

    Dim rowState As String = _
        System.Enum.GetName(row.RowState.GetType(), row.RowState)
    Console.WriteLine(vbTab & rowState)
  Next
End If
DataRow[] currentRows = workTable.Select(
    null, null, DataViewRowState.CurrentRows);

if (currentRows.Length < 1 )
  Console.WriteLine("No Current Rows Found");
else
{
  foreach (DataColumn column in workTable.Columns)
    Console.Write("\t{0}", column.ColumnName);

  Console.WriteLine("\tRowState");

  foreach (DataRow row in currentRows)
  {
    foreach (DataColumn column in workTable.Columns)
      Console.Write("\t{0}", row[column]);

    Console.WriteLine("\t" + row.RowState);
  }
}

Die Select-Methode kann verwendet werden, um Zeilen mit unterschiedlichen RowState-Werten oder Feldwerten zurückzugeben. Im folgenden Beispiel wird ein DataRow-Array zurückgegeben, das auf alle zeilen verweist, die gelöscht wurden, und ein weiteres DataRow-Array zurück, das auf alle Zeilen verweist, sortiert nach CustLName, wobei die CustID-Spalte größer als 5 ist. Informationen zum Anzeigen der Informationen in der gelöschten Zeile finden Sie unter "Zeilenzustände" und "Zeilenversionen".

' Retrieve all deleted rows.
Dim deletedRows() As DataRow = workTable.Select(Nothing, Nothing, DataViewRowState.Deleted)

' Retrieve rows where CustID > 5, and order by CustLName.
Dim custRows() As DataRow = workTable.Select( _
    "CustID > 5", "CustLName ASC")
// Retrieve all deleted rows.
DataRow[] deletedRows = workTable.Select(
    null, null, DataViewRowState.Deleted);

// Retrieve rows where CustID > 5, and order by CustLName.
DataRow[] custRows = workTable.Select("CustID > 5", "CustLName ASC");

Siehe auch