Zobrazení dat v datové tabulce
K obsahu DataTable tabulky DataTable můžete přistupovat pomocí kolekcí Řádky a 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");