Udostępnij przez


Wyświetlanie danych w tabeli DataTable

Dostęp do zawartości DataTable można uzyskać za pomocą kolekcji Rows i Columns w DataTable. Można również użyć metody Select, aby zwrócić podzestawy danych w DataTable zgodnie z kryteriami, takimi jak kryteria wyszukiwania, kolejność sortowania i stan wiersza. Ponadto można użyć Find metody DataRowCollection podczas wyszukiwania określonego wiersza przy użyciu wartości klucza podstawowego.

Select Metoda DataTable obiektu zwraca zestaw DataRow obiektów spełniających określone kryteria. Select Przyjmuje opcjonalne argumenty wyrażenia filtru, wyrażenia sortowania i DataViewRowState. Wyrażenie filtra określa, które wiersze mają być zwracane na podstawie wartości DataColumn, takich jak LastName = 'Smith'. Wyrażenie sortowania jest zgodne ze standardowymi konwencjami SQL dotyczącymi porządkowania kolumn, na przykład LastName ASC, FirstName ASC. Aby zapoznać się z regułami dotyczącymi pisania wyrażeń, zobacz właściwość Expression klasy DataColumn.

Wskazówka

Jeśli wykonujesz liczne wywołania metody Select dla DataTable, możesz zwiększyć wydajność, najpierw tworząc DataView dla DataTable. DataView Tworzenie powoduje indeksowanie wierszy tabeli. Następnie Select metoda używa tego indeksu, co znacznie skraca czas generowania wyniku zapytania. Aby uzyskać informacje na temat tworzenia DataView obiektu dataTable, zobacz DataViews .

Metoda Select określa, która wersja wierszy ma być widoczna lub manipulowana na podstawie elementu DataViewRowState. W poniższej tabeli opisano możliwe DataViewRowState wartości wyliczenia.

Wartość stanu DataViewRowState Opis
CurrentRows Bieżące wiersze, w tym bez zmian, dodane i zmodyfikowane wiersze.
usunięte Usunięty wiersz.
ModifiedCurrent Bieżąca wersja, która jest zmodyfikowaną wersją oryginalnych danych. (Zobacz ModifiedOriginal).
ZmodyfikowanyOryginał Oryginalna wersja wszystkich zmodyfikowanych wierszy. Bieżąca wersja jest dostępna przy użyciu metody ModifiedCurrent.
Dodane Nowy wiersz.
Brak Żaden.
OriginalRows Oryginalne wiersze, w tym bez zmian i usunięte wiersze.
Niezmienione Niezmieniony wiersz.

W poniższym przykładzie obiekt DataSet jest filtrowany tak, aby działać tylko z wierszami, których DataViewRowState jest ustawione na CurrentRows.

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);
  }
}

Metodę Select można użyć do zwracania wierszy z różnymi wartościami RowState lub wartościami pól. Poniższy przykład zwraca tablicę DataRow , która odwołuje się do wszystkich wierszy, które zostały usunięte, i zwraca kolejną DataRow tablicę, która odwołuje się do wszystkich wierszy uporządkowanych przez CustLName, gdzie kolumna CustID jest większa niż 5. Aby uzyskać informacje na temat wyświetlania informacji w wierszu Deleted, zobacz Stany wierszy i wersje wierszy.

' 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");

Zobacz także