Bagikan melalui


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}"/>

BookItemTemplateDataTemplate 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