Cara: Mengikat ke Sumber Data ADO.NET
Contoh ini menunjukkan cara mengikat kontrol Windows Presentation Foundation (WPF) ListBox ke ADO.NET DataSet
.
Contoh
Dalam contoh ini, OleDbConnection
objek digunakan untuk menyambungkan ke sumber data yang merupakan Access MDB
file yang ditentukan dalam string koneksi. Setelah koneksi dibuat, OleDbDataAdapter
objek dibuat. Objek OleDbDataAdapter
menjalankan pernyataan pilih Bahasa Permintaan Terstruktur (SQL) untuk mengambil kumpulan rekaman dari database. Hasil dari perintah SQL disimpan di salah DataSet
satu DataTable
dengan memanggil Fill
metode OleDbDataAdapter
. DataTable
Dalam contoh ini diberi nama BookTable
. Contoh kemudian mengatur DataContext properti ke ListBoxDataSet
objek .
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
Kita kemudian dapat mengikat ItemsSource properti dari ListBox ke BookTable
dari DataSet
:
<ListBox Name="myListBox" Height="200"
ItemsSource="{Binding Path=BookTable}"
ItemTemplate ="{StaticResource BookItemTemplate}"/>
BookItemTemplate
DataTemplate adalah yang menentukan bagaimana data muncul:
<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>
Mengonversi IntColorConverter
menjadi int
warna. Dengan penggunaan pengonversi ini, Background warna ketiga TextBlock tampak hijau jika nilai kurang dari NumPages
350 dan merah jika tidak. Implementasi konverter tidak ditampilkan di sini.
Baca juga
.NET Desktop feedback