Sdílet prostřednictvím


Zobrazení dat v datové tabulce

K obsahu DataTable můžete přistupovat pomocí kolekcí Rows a Columns z DataTable. Můžete také použít metodu Select k vrácení podmnožin dat v DataTable podle kritérií, včetně kritérií hledání, pořadí řazení a stavu řádku. Kromě toho můžete při hledání konkrétního řádku podle hodnoty primárního klíče použít metodu FindDataRowCollection.

Metoda Select objektu DataTable vrátí sadu DataRow objektů, které odpovídají zadaným kritériím. Select přebírá volitelné argumenty výrazu filtru, výrazu řazení a DataViewRowState. Výraz filtru identifikuje řádky, které se mají vrátit podle hodnot DataColumn, například LastName = 'Smith'. Výraz řazení se řídí standardními konvencemi SQL pro řazení sloupců, například LastName ASC, FirstName ASC. Pravidla pro psaní výrazů naleznete ve Expression vlastnosti DataColumn třídy.

Návod

Pokud provádíte řadu volání Select metody DataTable, můžete zvýšit výkon tak, že nejprve vytvoříte DataView pro DataTable. Vytvoření DataView indexuje řádky tabulky. Tato Select metoda pak tento index použije, což výrazně zkracuje dobu pro vygenerování výsledku dotazu. Informace o vytvoření DataView pro DataTable naleznete v tématu DataViews.

Metoda Select určuje, kterou verzi řádků zobrazit nebo s ní manipulovat na základě DataViewRowState. Následující tabulka popisuje možné DataViewRowState hodnoty výčtu.

Hodnota DataViewRowState Popis
CurrentRows Aktuální řádky včetně nezměněných, přidaných a upravených řádků
Odstraněno Odstraněný řádek.
ModifiedCurrent Aktuální verze, což je upravená verze původních dat. (Viz ModifiedOriginal.)
UpravenýOriginál Původní podoba všech změněných řádků. Aktuální verze je k dispozici pomocí ModifiedCurrent.
Přidán Nový řádek.
Nic Žádné.
OriginalRows Původní řádky, včetně nezměněných a odstraněných řádků
Nezměněný Nezměněný řádek.

V následujícím příkladu DataSet je objekt filtrován, takže pracujete pouze s řádky, jejichž DataViewRowState je nastavena 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);
  }
}

Metodu Select lze použít k vrácení řádků s různými RowState hodnotami nebo hodnotami polí. Následující příklad vrátí DataRow matici, která odkazuje na všechny řádky, které byly odstraněny, a vrátí další DataRow matici, která odkazuje na všechny řádky seřazené podle CustLName, kde CustID sloupec je větší než 5. Informace o tom, jak zobrazit informace v Deleted řádku, naleznete v tématu Stavy řádků a verze řádků.

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

Viz také