Partager via


Affichage des données dans un DataTable

Vous pouvez accéder au contenu d’un DataTable à l’aide des collections Rows et Columns du DataTable. Vous pouvez également utiliser la méthode Select pour retourner des sous-ensembles de données dans un DataTable selon des critères, notamment les critères de recherche, l'ordre de tri et l'état des lignes. En outre, vous pouvez utiliser la méthode Find de DataRowCollection lorsque vous recherchez une ligne particulière en utilisant une valeur de clé primaire.

La Select méthode de l’objet DataTable retourne un ensemble d’objets DataRow qui correspondent aux critères spécifiés. Select prend des arguments facultatifs d’une expression de filtre, d’une expression de tri et de DataViewRowState. L’expression de filtre identifie les lignes à retourner en fonction des valeurs DataColumn, telles que LastName = 'Smith'. L’expression de tri suit les conventions SQL standard pour classer les colonnes, par exemple LastName ASC, FirstName ASC. Pour connaître les règles relatives à l’écriture d’expressions, consultez la Expression propriété de la DataColumn classe.

Conseil / Astuce

Si vous effectuez un certain nombre d’appels à la Select méthode d’un DataTable, vous pouvez augmenter les performances en créant d’abord un DataView pour le DataTable. Création de l’index DataView des lignes de la table. La Select méthode utilise ensuite cet index, réduisant considérablement le temps nécessaire pour générer le résultat de la requête. Pour obtenir des informations sur la création de DataView pour un DataTable, consultez DataViews.

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

Valeur de DataViewRowState Descriptif
CurrentRows Lignes actuelles, y compris les lignes inchangées, ajoutées et modifiées.
Supprimé Ligne supprimée.
ModifiedCurrent 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 Aucun.
OriginalRows Lignes d’origine, y compris les lignes inchangées et supprimées.
Inchangé Ligne non modifiée.

Dans l’exemple suivant, l’objet DataSet est filtré de manière à ne travailler qu’avec des lignes dont DataViewRowState est à 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 Select méthode peut être utilisée pour retourner des lignes avec des valeurs ou des valeurs de RowState champ différentes. L’exemple suivant retourne un DataRow tableau qui fait référence à toutes les lignes qui ont été supprimées et retourne un autre DataRow tableau qui référence toutes les lignes, classé par CustLName, où la CustID colonne est supérieure à 5. Pour plus d’informations sur la façon d’afficher les informations de la Deleted ligne, consultez Les états de ligne et les versions de ligne.

' 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