Partager via


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

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

Exemple

Dans cet exemple, un objet OleDbConnection est utilisé pour se connecter à la source de données qui est dans un fichier Access MDB spécifié dans la chaîne de connexion. Une fois la connexion établie, un objet OleDbDataAdpater est créé. L'objet OleDbDataAdpater exécute une instruction Structured Query Language (SQL) Select pour récupérer le recordset dans la base de données. Les résultats de la commande SQL sont stockés dans un DataTable du DataSet en appelant la méthode Fill du OleDbDataAdapter. Dans cet exemple, le DataTable est nommé BookTable. L'exemple affecte ensuite à la propriété DataContext du ListBox l'objet DataSet.

    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
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;
}

Vous pouvez ensuite lier la propriété ItemsSource du ListBox au BookTable duDataSet :

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

BookItemTemplate est le DataTemplate qui définit comment apparaissent les données :

<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>

Le IntColorConverter convertit un int en une couleur. En utilisant ce convertisseur, la couleur Background du troisième TextBlock apparaît verte si la valeur du NumPages est inférieure à 350 et rouge dans le cas contraire. L'implémentation du convertisseur est montrée ici.

Voir aussi

Référence

BindingListCollectionView

Concepts

Vue d'ensemble de la liaison de données

Autres ressources

Rubriques "Comment" relatives aux liaisons de données