Jak powiązać ze źródłem danych ADO.NET
W tym przykładzie pokazano, jak powiązać kontrolkę Windows Presentation Foundation (WPF) ListBox z ADO.NET DataSet
.
Przykład
W tym przykładzie OleDbConnection
obiekt jest używany do nawiązywania połączenia ze źródłem danych, które jest plikiem Access MDB
określonym w parametry połączenia. Po nawiązaniu OleDbDataAdapter
połączenia zostanie utworzony obiekt. Obiekt OleDbDataAdapter
wykonuje instrukcję select Structured Query Language (SQL), aby pobrać zestaw rekordów z bazy danych. Wyniki polecenia SQL są przechowywane w obiekcie DataTable
DataSet
, wywołując metodę Fill
OleDbDataAdapter
. W DataTable
tym przykładzie nazwa BookTable
to . W tym przykładzie DataContext właściwość obiektu ListBox jest ustawiana na DataSet
obiekt .
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
Następnie możemy powiązać ItemsSource właściwość elementu ListBoxBookTable
z elementem DataSet
:
<ListBox Name="myListBox" Height="200"
ItemsSource="{Binding Path=BookTable}"
ItemTemplate ="{StaticResource BookItemTemplate}"/>
BookItemTemplate
jest elementem DataTemplate definiującym sposób wyświetlania danych:
<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>
Element IntColorConverter
konwertuje int
element na kolor. W przypadku korzystania z tego konwertera kolor trzeciego TextBlock pojawia się na zielono, Background jeśli wartość NumPages
jest mniejsza niż 350 i czerwona. Implementacja konwertera nie jest tutaj pokazana.
Zobacz też
.NET Desktop feedback
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla