Zobrazení dat v datové tabulce

K obsahu DataTable tabulky DataTable můžete přistupovat pomocí kolekcí Řádkya sloupce. Metodu Select můžete také použít k vrácení podmnožina dat v tabulce DataTable podle kritérií, včetně kritérií hledání, pořadí řazení a stavu řádku. Kromě toho můžete použít Find metodu DataRowCollection při hledání konkrétního řádku pomocí hodnoty primárního klíče.

Metoda Select objektu DataTable vrátí sadu DataRow objektů, které odpovídají zadaným kritériím. Výběr přebírá volitelné argumenty výrazu filtru, výrazu řazení a DataViewRowState. Výraz filtru určuje, které řádky se mají vrátit na základě 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 zápis výrazů naleznete Expression vlastnost DataColumn třídy.

Tip

Pokud provádíte řadu volání metody Select datové tabulky, můžete zvýšit výkon vytvořením DataView datové tabulky. Při vytváření objektu DataView se indexuje řádky tabulky. Metoda Select pak tento index použije, což výrazně zkracuje čas pro vygenerování výsledku dotazu. Informace o vytvoření DataView pro DataTable naleznete v tématu DataViews.

Metoda Select určuje, která verze řádků se má zobrazit nebo manipulovat na DataViewRowStatezákladě . Následující tabulka popisuje možné hodnoty výčtu DataViewRowState .

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.)
ModifiedOriginal Původní verze všech upravených řádků. Aktuální verze je k dispozici pomocí ModifiedCurrent.
Přidány Nový řádek.
Nic Žádný.
OriginalRows Původní řádky, včetně nezměněných a odstraněných řádků
Nezměněn Beze změny řádku.

V následujícím příkladu je objekt DataSet 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 hodnotami RowState nebo hodnotami polí. Následující příklad vrátí pole DataRow , které odkazuje na všechny řádky, které byly odstraněny, a vrátí další pole DataRow , které odkazuje na všechny řádky seřazené podle CustLName, kde je sloupec CustID větší než 5. Informace o tom, jak zobrazit informace v odstraněný řádek, 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é