Share via


Procedura: eseguire l'associazione a un'origine dati ADO.NET

In questo esempio viene illustrato come associare un controllo ListBox Windows Presentation Foundation (WPF) a un oggetto DataSet ADO.NET.

Esempio

Nell'esempio, viene utilizzato un oggetto OleDbConnection per la connessione all'origine dati, ovvero un file Access MDB specificato nella stringa di connessione. Una volta stabilita la connessione, viene creato un oggetto OleDbDataAdpater, che esegue un'istruzione Structured Query Language (SQL) Select per recuperare il recordset dal database. I risultati del comando SQL vengono archiviati in un oggetto DataTable dell'oggetto DataSet chiamando il metodo Fill di OleDbDataAdapter. Il nome dell'oggetto DataTable dell'esempio è BookTable. Viene quindi impostata la proprietà DataContext di ListBox sull'oggetto 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;
}

A questo punto è possibile associare la proprietà ItemsSource di ListBox su BookTable per l'oggetto DataSet:

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

BookItemTemplate è l'oggetto DataTemplate che definisce la modalità di visualizzazione dei dati:

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

Il convertitore IntColorConverter consente di convertire un oggetto int in un colore. Se si utilizza questo convertitore, il colore di Background del terzo oggetto TextBlock sarà verde se il valore di NumPages è inferiore a 350; in caso contrario sarà rosso. L'implementazione del convertitore non viene illustrata in questo argomento.

Vedere anche

Riferimenti

BindingListCollectionView

Concetti

Cenni preliminari sull'associazione dati

Altre risorse

Procedure relative all'associazione dati