Comment : effectuer une liaison à une source de données ADO.NET

Cet exemple montre comment lier un contrôle WPF (Windows Presentation Foundation) ListBox à un ADO.NET DataSet.

Exemple

Dans cet exemple, un objet OleDbConnection est utilisé pour se connecter à la source de données qui est un fichier Access MDB spécifié dans la chaîne de connexion. Une fois la connexion établie, un objet OleDbDataAdapter est créé. L’objet OleDbDataAdapter exécute une instruction select langage SQL (SQL) pour récupérer le jeu d’enregistrements à partir de la base de données. Les résultats de la commande SQL sont stockés dans un DataTable des DataSet éléments en appelant la Fill méthode du OleDbDataAdapter. Dans cet exemple, la DataTable est nommée BookTable. L’exemple définit ensuite la DataContext propriété de l’objet ListBoxDataSet .

DataSet myDataSet;

private void OnInit(object sender, EventArgs e)
{
  string mdbFile = Path.Combine(AppDataPath, "BookData.mdb");
  string connString = string.Format(
      "Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}", mdbFile);
  OleDbConnection conn = new OleDbConnection(connString);
  OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM BookTable;", conn);

  myDataSet = new DataSet();
  adapter.Fill(myDataSet, "BookTable");

  // myListBox is a ListBox control.
  // Set the DataContext of the ListBox to myDataSet
  myListBox.DataContext = myDataSet;
}
Private myDataSet As DataSet

Private Sub OnInit(ByVal sender As Object, ByVal e As EventArgs)
  Dim mdbFile As String = Path.Combine(AppDataPath, "BookData.mdb")
  Dim connString As String = String.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}", mdbFile)
  Dim conn As New OleDbConnection(connString)
  Dim adapter As New OleDbDataAdapter("SELECT * FROM BookTable;", conn)

  myDataSet = New DataSet()
  adapter.Fill(myDataSet, "BookTable")

  ' myListBox is a ListBox control.
  ' Set the DataContext of the ListBox to myDataSet
  myListBox.DataContext = myDataSet
End Sub

Nous pouvons ensuite lier la ItemsSource propriété de l’élément ListBox à BookTable :DataSet

<ListBox Name="myListBox" Height="200"
  ItemsSource="{Binding Path=BookTable}"
  ItemTemplate  ="{StaticResource BookItemTemplate}"/>

BookItemTemplate est celui DataTemplate qui définit la façon dont les données s’affichent :

<StackPanel.Resources>
  <c:IntColorConverter x:Key="MyConverter"/>

  <DataTemplate x:Key="BookItemTemplate">
    <Grid>
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="250" />
        <ColumnDefinition Width="100" />
        <ColumnDefinition Width="*"/>
      </Grid.ColumnDefinitions>
      <TextBlock Text="{Binding Path=Title}" Grid.Column="0"
        FontWeight="Bold" />
      <TextBlock Text="{Binding Path=ISBN}" Grid.Column="1" />
      <TextBlock Grid.Column="2" Text="{Binding Path=NumPages}"
                 Background="{Binding Path=NumPages,
          Converter={StaticResource MyConverter}}"/>
    </Grid>
  </DataTemplate>
</StackPanel.Resources>

IntColorConverter convertit un int en une couleur. Avec l’utilisation de ce convertisseur, la Background couleur du troisième TextBlock apparaît verte si la valeur est NumPages inférieure à 350 et rouge dans le cas contraire. L’implémentation du convertisseur n’est pas décrite ici.

Voir aussi