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
.NET Desktop feedback