Affichage des données dans un DataTable

Vous pouvez accéder au contenu d’un objet DataTable à l’aide des collections Rows et Columns du DataTable. Vous pouvez également utiliser la méthode Select pour retourner des sous-ensembles des données d’un DataTable en fonction de certains critères, notamment des critères de recherche, l’ordre de tri et l’état de la ligne. De plus, vous pouvez utiliser la méthode Find du DataRowCollection quand vous recherchez une ligne particulière à l’aide d’une valeur de clé primaire.

La méthode Select de l’objet DataTable retourne un ensemble d’objets DataRow correspondant aux critères spécifiés. Select prend des arguments facultatifs d’une expression de filtre, une expression de tri et DataViewRowState. L’expression de filtre identifie la ligne à retourner en fonction des valeurs de DataColumn, telles que LastName = 'Smith'. L'expression de tri respecte les conventions SQL standard de tri des colonnes, comme LastName ASC, FirstName ASC. Pour des informations sur les règles d’écriture des expressions, consultez la propriété Expression de la classe DataColumn.

Conseil

Si vous devez effectuer plusieurs appels à la méthode Select d’un DataTable, vous pouvez améliorer les performances en créant préalablement un objet DataView pour le DataTable. La création du DataView indexe les lignes de la table. La méthode Select utilise ensuite cet index, ce qui réduit sensiblement le temps nécessaire pour générer les résultats de la requête. Pour plus d’informations sur la création d’un DataView pour un DataTable, consultez DataViews.

La méthode Select détermine la version des lignes à afficher ou à manipuler, en fonction d’un objet DataViewRowState. Le tableau suivant liste les valeurs possibles d’énumération DataViewRowState.

Valeur DataViewRowState Description
CurrentRows Les lignes en cours comprennent les lignes non modifiées, les lignes ajoutées et les lignes modifiées.
Supprimé Ligne supprimée.
ModifiedCurrent Une version actuelle, qui est une version modifiée des données d'origine. (Voir ModifiedOriginal.)
ModifiedOriginal La version d'origine de toutes les lignes modifiées. La version actuelle est disponible à l’aide de ModifiedCurrent.
Ajouté Nouvelle ligne.
Aucun Aucune.
OriginalRows Les lignes d'origine, notamment les lignes non modifiées et les lignes supprimées.
Inchangé Ligne non modifiée.

Dans l’exemple suivant, l’objet DataSet est filtré de sorte que vous n’utilisiez que les lignes dont le DataViewRowState a la valeur 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);
  }
}

La méthode Select peut être utilisée pour retourner des lignes ayant des valeurs de champs ou des valeurs RowState différentes. L’exemple suivant retourne un tableau DataRow qui référence toutes les lignes supprimées, ainsi qu’un autre tableau DataRow qui référence toutes les lignes, classées par CustLName, où la colonne CustID est supérieure à 5. Pour plus d’informations sur l’affichage des informations de la ligne Deleted, consultez États des lignes et versions des lignes.

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

Voir aussi