Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einführung
2 Grundlagen
3 Fehlerbehandlung
4 Erweiterte Grundlagen
5 Objektorientierte Programmierung
6 Wichtige Klassen in .NET
7 Weitere Elemente eines Windows-Programms
8 Datenbank-Anwendungen mit ADO.NET
9 Internet-Anwendungen mit ASP.NET
10 Zeichnen mit GDI+
11 Beispielprojekte
12 Windows Presentation Foundation
13 Windows Store-Apps für Windows 8
A Installation und technische Hinweise
B Lösungen der Übungsaufgaben
C Inhalt der Buch-DVD
D Der Autor
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
Einstieg in Visual Basic 2012 von Thomas Theis
Ideal für Programmiereinsteiger geeignet
Buch: Einstieg in Visual Basic 2012

Einstieg in Visual Basic 2012
Rheinwerk Computing
579 S., 3., aktualisierte und erweiterte Auflage 2013, brosch., mit DVD
24,90 Euro, ISBN 978-3-8362-1959-4
Pfeil 12 Windows Presentation Foundation
Pfeil 12.1 Layout
Pfeil 12.2 Steuerelemente
Pfeil 12.3 Frame-Anwendung
Pfeil 12.4 Datenbindung
Pfeil 12.5 Zweidimensionale Grafik
Pfeil 12.6 Dreidimensionale Grafik
Pfeil 12.7 Animation
Pfeil 12.8 WPF und Windows Forms
Pfeil 12.8.1 Windows Forms in WPF
Pfeil 12.8.2 WPF in Windows Forms

Rheinwerk Computing - Zum Seitenanfang

12.4 Datenbindung

In diesem Abschnitt soll gezeigt werden, wie einfach die Erstellung einer Datenbindung mithilfe der WPF ist, zum Beispiel zu einer Datenbank. Als Steuerelement wird ein Steuerelement vom Typ DataGrid genommen, siehe Abbildung 12.6. Es bietet viel Komfort durch eine große Anzahl an Einstellmöglichkeiten. Außerdem ist es editierbar und somit nicht nur zur Darstellung von großen Datenmengen (zum Beispiel aus Datenbanken) sondern auch zur Veränderung derselben geeignet.

Abbildung

Abbildung 12.6 Datenbindung mit DataGrid

Es wird die bereits bekannte Datenbank firma.accdb mit der Tabelle personen verwendet. Sie wird dem Projekt per Drag & Drop im Projektmappen-Explorer hinzugefügt. Es öffnet sich ein Assistenten-Dialogfeld. Darin wird die Erstellung des DataSets abgebrochen.

Nach dem Start des Programms wird der Inhalt der Tabelle geladen und dargestellt. Der Benutzer kann Daten ändern, neu hinzufügen oder löschen. Beim Schließen des Fensters wird die Datenbank mit den geänderten Daten aktualisiert.

Der Aufbau in XAML ist einfach:

<Window ... Loaded="Window_Loaded" Closing="Window_Closing">
<StackPanel>
<DataGrid x:Name="dg" ItemsSource="{Binding}" />
</StackPanel>
</Window>

Listing 12.9 Projekt »WPFDataGridAccess«, XAML-Code

Die Eigenschaft ItemsSource verweist auf die Auflistung, die als Inhalt für das DataGrid dienen soll. Die Auflistung wird in diesem Falle über eine Datenbindung ermittelt.

Es folgt der Code der Fensterklasse:

Imports System.Data
Imports System.Data.OleDb

Class MainWindow
Dim da As OleDbDataAdapter
Dim dt As DataTable

Sub New()
InitializeComponent()
Dim con As OleDbConnection = New OleDbConnection(
"Provider=Microsoft.ACE.OLEDB.12.0;" &
"Data Source=firma.accdb")
da = New OleDbDataAdapter("select * from personen", con)
Dim cb As OleDbCommandBuilder =
New OleDbCommandBuilder(da)
dt = New DataTable()
End Sub

Private Sub Window_Loaded(sender As Object,
e As RoutedEventArgs)
da.Fill(dt)
dg.DataContext = dt
End Sub

Private Sub Window_Closing(sender As Object,
e As ComponentModel.CancelEventArgs)
da.Update(dt)
End Sub
End Class

Listing 12.10 Projekt WPFDataGridAccess, Programmcode

Es werden die beiden Namespaces System.Data und System.Data.OleDb benötigt. Die Instanzen der Klassen OleDbAdapter und DataTable werden sowohl beim Laden als auch beim Aktualisieren der Daten genutzt, daher werden sie zu Eigenschaften der Fensterklasse.

Im Konstruktor der Fensterklasse wird über die Instanz der Klasse OleDbConnection die Verbindung zur Datenbank hergestellt. Die Instanz der Klasse OleDbAdapter beinhaltet nach ihrer Erzeugung den Inhalt des SQL-Kommandos select zur Auswahl der Daten. Die Instanz der Klasse OleDbCommandBuilder erzeugt passend für diesen Adapter die Inhalte der SQL-Kommandos insert, update und delete. Es wird eine Instanz einer DataTable erzeugt.

Beim Laden des Fensters wird die DataTable über den Adapter gefüllt. Die Eigenschaft DataContext des DataGrid verweist auf die gefüllte DataTable.

Beim Schließen des Fensters (Ereignis Window_Closing()) wird die Datenbank aus der DataTable über den Adapter durch Aufruf der Methode Update() aktualisiert. Dabei kommen die SQL-Kommandos zum Einsatz, die über die Instanz der Klasse OleDbCommandBuilder erzeugt wurden.

Der XAML-Code ist sehr kurz. Dies liegt daran, dass ein DataGrid in seinen Standard-Einstellungen bereits viel Funktionalität bietet. Diese Standard-Einstellungen können Sie mithilfe der nachfolgenden Beschreibung testen. Außerdem können Sie die genannten Alternativen ausprobieren.

Sie können Daten ändern, hinzufügen oder löschen, weil die boolesche Eigenschaft IsReadOnly den Wert False hat. Auch wenn sie den Wert True hat, können Sie das Hinzufügen neuer Datensätze verhindern, indem Sie CanUserAddRows auf False setzen. Das Entsprechende gilt für das Löschen von Datensätzen und CanUserDeleteRows.

Sie können mehrere Datensätze, ob zusammenhängend oder nicht, auswählen, weil die Eigenschaft SelectionMode den Wert Extended hat. Die Enumeration DataGridSelectionMode bietet außerdem noch den Wert Single, für die einfache Auswahl.

Falls Sie auf eine beliebige Zelle in einer Zeile klicken, so wird die gesamte Zeile ausgewählt, weil die Eigenschaft SelectionUnit den Wert FullRow hat. Der Wert Cell aus der Enumeration DataGridSelectionUnit ermöglicht die Auswahl einer einzelnen Zelle. Der Wert CellOrRowHeader ermöglicht beides, dabei muss zur Auswahl einer ganzen Zeile auf den Zeilenkopf geklickt werden.

Die Spalten lassen sich nach Wert sortieren, weil CanUserSortColumns den Wert True hat. Derselbe Wert für CanUserReorderColumns ermöglicht den Tausch von Spalten. Spaltenbreite und Zeilenhöhe lassen sich verändern, weil CanUserResizeColumns und CanUserResizeRows den Wert True haben.

Es sind alle Gitternetzlinien sichtbar, weil die Eigenschaft GridLinesVisibility den Wert All hat. Weitere Werte aus der Enumeration DataGridGridLinesVisibility sind None, Horizontal und Vertical. Alle Zeilen- und Spaltenköpfe sind sichtbar, weil die Eigenschaft HeadersVisibility ebenfalls den Wert All hat. Die Enumeration DataGridHeadersVisibility bietet noch die Werte None, Column und Row.

Sie können eine ganze Zeile ohne Header in Form einer Tabellenzeile in die Zwischenablage kopieren, zum Beispiel mit der Tastenkombination Strg + C. Dafür sorgt der Wert ExcludeHeader für die Eigenschaft ClipboardCopyMode. Weitere Werte in der Enumeration DataGridClipboardCopyMode sind IncludeHeader und None. Anschließend könnten Sie die Tabellenzeile(n) zum Beispiel in MS Word oder MS Excel einfügen.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Einstieg in Visual Basic 2012

Einstieg in Visual Basic 2012
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Visual Basic 2012






 Visual Basic 2012


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Rheinwerk-Shop: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Rheinwerk-Shop: Einstieg in Python






 Einstieg in Python


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern