Übersicht über das DataGrid-Steuerelement (Windows Forms)
Aktualisiert: November 2007
Hinweis: |
---|
Obwohl das DataGrid-Steuerelement durch das DataGridView-Steuerelement ersetzt und funktionell erweitert wird, wird das DataGrid-Steuerelement sowohl aus Gründen der Abwärtskompatibilität als auch, falls gewünscht, für die zukünftige Verwendung beibehalten. Weitere Informationen finden Sie unter Unterschiede zwischen dem DataGridView-Steuerelement und dem DataGrid-Steuerelement in Windows Forms. |
Das DataGrid-Steuerelement in Windows Forms zeigt Daten in einer Gruppe von Zeilen und Spalten an. Im einfachsten Fall ist das Datenblatt an eine Datenquelle gebunden, die aus einer einzigen Tabelle ohne Beziehungen besteht. In diesem Fall werden die Daten wie in einem Arbeitsblatt in einfachen Zeilen und Spalten angezeigt. Weitere Informationen zum Binden von Daten an andere Steuerelemente finden Sie unter Datenbindung und Windows Forms.
Wenn DataGrid an Daten gebunden wird, die aus Tabellen mit mehrfachen Beziehungen bestehen, und für das Datenblatt die Navigation aktiviert ist, werden in jeder Zeile des Datenblattes Erweiterungsmarken angezeigt. Mithilfe einer Erweiterungsmarke kann der Benutzer von einer übergeordneten Tabelle zu einer untergeordneten Tabelle navigieren. Wenn der Benutzer auf einen Knoten klickt, wird die untergeordnete Tabelle angezeigt. Durch Klicken auf die Schaltfläche Zurück wird wieder die übergeordnete Tabelle angezeigt. Auf diese Weise werden auf dem Datenblatt die hierarchischen Beziehungen zwischen Tabellen angezeigt.
In der folgenden Bildschirmabbildung ist ein DataGrid-Steuerelement dargestellt, das an Daten mit mehreren Tabellen gebunden ist.
Ein DataGrid-Steuerelement mit einer Bindung an Daten in mehreren Tabellen
Das DataGrid-Steuerelement kann eine Benutzeroberfläche für ein Dataset, die Navigation zwischen verknüpften Tabellen sowie umfangreiche Formatierungs- und Bearbeitungsfunktionen zur Verfügung stellen.
Das Anzeigen und das Bearbeiten von Daten sind verschiedene Funktionen: Das Steuerelement ist für die Benutzeroberfläche zuständig, während .NET Framework-Datenanbieter und die Datenbindungsarchitektur von Windows Forms für die Datenaktualisierung sorgen. Daher sind mehrere Steuerelemente, die an dieselbe Datenquelle gebunden sind, immer synchron.
Visual Basic-Hinweis: |
---|
Wenn Sie das DataGrid-Steuerelement von Visual Basic 6.0 kennen, werden Sie am DataGrid-Steuerelement von Windows Forms einige entscheidende Unterschiede feststellen. |
Wenn das Datenblatt an ein DataSet gebunden ist, werden die Zeilen und Spalten automatisch erstellt, formatiert und gefüllt. Weitere Informationen finden Sie unter Datenbindung und Windows Forms. Nach dem Generieren des DataGrid-Steuerelements können Sie nach Belieben Spalten oder Zeilen hinzufügen, löschen, neu anordnen und formatieren.
Binden von Daten an das Steuerelement
Damit das DataGrid-Steuerelement funktioniert, muss es zur Entwurfszeit mit der DataSource-Eigenschaft und der DataMember-Eigenschaft oder zur Laufzeit mit der SetDataBinding-Methode an eine Datenquelle gebunden werden. Durch diese Bindung verweist das DataGrid auf ein instanziiertes Datenquellenobjekt, beispielsweise ein DataSet oder eine DataTable. Durch das DataGrid-Steuerelement werden die Ergebnisse der Aktionen angezeigt, die für die Daten durchgeführt werden. Die meisten datenspezifischen Aktionen werden nicht von DataGrid, sondern von der Datenquelle ausgeführt.
Wenn die Daten im gebundenen Dataset auf beliebige Weise aktualisiert werden, werden diese Änderungen vom DataGrid-Steuerelement nachvollzogen. Wenn die ReadOnly -Eigenschaft für das Datenblatt und die dazugehörigen Tabellen- und Spaltenformate auf false festgelegt ist, können die Daten im Dataset mithilfe des DataGrid-Steuerelements aktualisiert werden.
In DataGrid kann jeweils nur eine Tabelle angezeigt werden. Wenn zwischen Tabellen Beziehungen von über- und untergeordneten Elementen definiert sind, können Benutzer zwischen den verknüpften Tabellen navigieren, um die im DataGrid-Steuerelement anzuzeigende Tabelle auszuwählen. Informationen zum Binden eines DataGrid-Steuerelements an eine ADO.NET-Datenquelle zur Entwurfszeit oder zur Laufzeit finden Sie unter Gewusst wie: Binden des DataGrid-Steuerelements in Windows Forms an eine Datenquelle.
Gültige Datenquellen für DataGrid sind unter anderem:
DataTable-Klasse
DataView-Klasse
DataSet-Klasse
DataViewManager-Klasse
Wenn Sie als Quelle ein DataSet verwenden, kann dieses als Formularobjekt vorliegen oder als Objekt, das von einem XML-Webdienst an das Formular übergeben wird. Sie können an Datasets mit oder ohne Typisierung binden.
Darüber hinaus können Sie ein DataGrid-Steuerelement an zusätzliche Strukturen binden, wenn durch die Objekte in der jeweiligen Struktur, beispielsweise durch die Elemente in einem Array, öffentliche Eigenschaften verfügbar gemacht werden. Im Datenblatt werden sämtliche öffentlichen Eigenschaften der Elemente in der Struktur angezeigt. Wenn Sie z. B. das DataGrid-Steuerelement an ein Array von Kundenobjekten binden, zeigt das Datenblatt alle öffentlichen Eigenschaften dieser Kundenobjekte an. In manchen Fällen hat dies zur Folge, dass Sie zwar an die Struktur binden können, die resultierende gebundene Struktur unter Umständen jedoch in der Praxis keine Anwendung findet. Sie können beispielsweise eine Bindung an ein Ganzzahlarray vornehmen. Da der Datentyp Integer jedoch keine öffentlichen Eigenschaften unterstützt, können auf dem Datenblatt keine Daten angezeigt werden.
Bindungen sind an die folgenden Strukturen möglich, sofern ihre Elemente öffentliche Eigenschaften verfügbar machen:
Alle Komponenten, die die IList-Schnittstelle implementieren. Dazu gehören eindimensionale Arrays.
Alle Komponenten, die die IListSource-Schnittstelle implementieren.
Alle Komponenten, die die IBindingList-Schnittstelle implementieren.
Weitere Informationen zu möglichen Datenquellen finden Sie unter Von Windows Forms unterstützte Datenquellen.
Rasteranzeige
Das DataGrid-Steuerelement wird häufig zur Anzeige einer einzelnen Tabelle mit Daten aus einem Dataset eingesetzt. Allerdings kann es auch zum Anzeigen von mehreren Tabellen, einschließlich verknüpfter Tabellen, verwendet werden. Die Anzeige des Datenblatts wird automatisch an die Datenquelle angepasst. In der folgenden Tabelle ist diese Anzeige für verschiedene Konfigurationen dargestellt.
Inhalt des DataSet |
Anzeige |
---|---|
Einzelne Tabelle. |
Die Tabelle wird auf einem Datenblatt angezeigt. |
Mehrere Tabellen. |
Im Datenblatt wird eine Strukturansicht angezeigt, die die Benutzer durchgehen und nach der gewünschten Tabelle durchsuchen können. |
Mehrere verknüpfte Tabellen. |
Im Datenblatt wird eine Strukturansicht angezeigt, in der Tabellen ausgewählt werden können, oder Sie geben an, dass im Raster die übergeordnete Tabelle angezeigt wird. Benutzer können dann mithilfe von Datensätzen in der übergeordneten Tabelle zu den entsprechenden untergeordneten Zeilen navigieren. |
Hinweis: |
---|
Tabellen in einem DataSet werden mithilfe eines DataRelation-Objekts verknüpft. |
Wenn im DataGrid-Steuerelement eine Tabelle angezeigt wird und für die AllowSorting-Eigenschaft true festgelegt ist, können die Daten durch Klicken auf den Spaltenheader sortiert werden. Der Benutzer kann außerdem Zeilen hinzufügen und Zellen bearbeiten.
Die Beziehungen zwischen mehreren Tabellen werden in einer hierarchischen Navigationsstruktur angezeigt. Übergeordnete Tabellen befinden sich auf der obersten Datenebene, während untergeordnete Tabellen solche sind, die aus den jeweiligen Auflistungen in den übergeordneten Tabellen entstehen. In allen Zeilen, die untergeordnete Tabellen besitzen, werden Erweiterungsmarken angezeigt. Wenn der Benutzer auf eine Erweiterungsmarke klickt, wird eine Liste von Verknüpfungen mit den untergeordneten Tabellen erstellt, ähnlich einer Liste von Weblinks. Bei Auswahl einer der Verknüpfungen wird die untergeordnete Tabelle angezeigt. Durch Klicken auf das Symbol zum Ein- und Ausblenden von übergeordneten Zeilen () werden die Informationen zur übergeordneten Tabelle ausgeblendet bzw. eingeblendet, wenn sie zuvor vom Benutzer ausgeblendet wurden. Der Benutzer kann zur vorherigen Tabelle zurückkehren, indem er auf die Schaltfläche Zurück klickt.
Spalten und Zeilen
Das DataGrid-Steuerelement besteht aus einer Auflistung von DataGridTableStyle-Objekten, die in der TableStyles-Eigenschaft des DataGrid-Steuerelements enthalten sind. Ein Tabellenformat kann ein Auflistung von DataGridColumnStyle-Objekten enthalten, die in der GridColumnStyles-Eigenschaft von DataGridTableStyle enthalten sind. Sie können die TableStyles-Eigenschaft und die GridColumnStyles-Eigenschaft mit Auflistungs-Editoren bearbeiten, auf die Sie über das Eigenschaftenfenster zugreifen.
Auf jede dem DataGrid-Steuerelement zugeordnete DataGridTableStyle-Eigenschaft kann über GridTableStylesCollection zugegriffen werden. Die GridTableStylesCollection kann im Designer mit dem DataGridTableStyle-Auflistungs-Editor oder programmgesteuert über die TableStyles-Eigenschaft des DataGrid-Steuerelements bearbeitet werden.
Die folgende Illustration zeigt die im DataGrid-Steuerelement enthaltenen Objekte an.
Tabellen- und Spaltenformate werden mit DataTable-Objekten und DataColumn-Objekten synchronisiert, indem ihre MappingName-Eigenschaften auf die entsprechende TableName-Eigenschaft und die ColumnName-Eigenschaft festgelegt werden. Wenn ein DataGridTableStyle ohne Spaltenformate einem DataGrid-Steuerelement hinzugefügt wird, das an eine gültige Datenquelle gebunden ist, und wenn die MappingName-Eigenschaft dieses Tabellenformats auf eine gültige TableName-Eigenschaft festgelegt ist, wird für das Tabellenformat eine Auflistung von DataGridColumnStyle-Objekten erstellt. Für jede DataColumn, die in der Columns-Auflistung der DataTable enthalten ist, wird der GridColumnStylesCollection ein entsprechendes DataGridColumnStyle hinzugefügt. Auf GridColumnStylesCollection wird über die GridColumnStyles-Eigenschaft von DataGridTableStyle zugegriffen. Indem für GridColumnStylesCollection die Add-Methode oder die Remove-Methode verwendet wird, können Spalten auf dem Datenblatt hinzugefügt oder gelöscht werden. Weitere Informationen finden Sie unter Gewusst wie: Hinzufügen von Tabellen und Spalten zum DataGrid-Steuerelement in Windows Forms und Gewusst wie: Löschen oder Ausblenden von Spalten aus dem DataGrid-Steuerelement in Windows Forms.
Mit einer Auflistung von Spaltentypen wird die DataGridColumnStyle-Klasse um umfangreiche Formatierungs- und Bearbeitungsfunktionen erweitert. Alle Spaltentypen erben von der DataGridColumnStyle-Basisklasse. Die erstellte Klasse hängt von der DataType-Eigenschaft der DataColumn ab, die die Grundlage für DataGridColumn darstellt. Beispielsweise wird eine DataColumn, deren DataType-Eigenschaft auf Boolean festgelegt ist, mit DataGridBoolColumn verknüpft. In der folgenden Tabelle werden die einzelnen Spaltentypen beschrieben.
Spaltentyp |
Beschreibung |
---|---|
Akzeptiert Daten und zeigt sie als formatierte oder unformatierte Zeichenfolgen an. Die Bearbeitungsfunktionen für Daten sind dieselben wie in einem einfachen TextBox. Erbt von DataGridColumnStyle. |
|
Akzeptiert die Werte true, false und NULL und zeigt sie an. Erbt von DataGridColumnStyle. |
Wenn Sie auf den rechten Rand einer Spalte doppelklicken, wird die Größe der Spalte geändert, damit die Beschriftung und der längste Eintrag voll angezeigt werden.
Tabellenformate und Spaltenformate
Sobald Sie das Standardformat für das DataGrid-Steuerelement eingerichtet haben, können Sie die Farben anpassen, die zur Anzeige bestimmter Tabellen innerhalb des Datenblatts verwendet werden.
Erstellen Sie dazu Instanzen der DataGridTableStyle-Klasse. Tabellenformate legen die Formatierung für bestimmte Tabellen fest. Diese Formatierung entspricht nicht der des DataGrid-Steuerelements selbst. Für jede Tabelle kann jeweils nur ein Tabellenformat definiert werden.
In manchen Fällen kann es sich als sinnvoll erweisen, in einer einzelnen Datentabelle eine bestimmte Spalte in einem anderen Format anzuzeigen als die übrigen Spalten. Sie können einen benutzerdefinierten Satz von Spaltenformaten mithilfe der GridColumnStyles-Eigenschaft erstellen.
Spaltenformate werden mit Spalten in einem DataSet auf die gleiche Weise verknüpft wie Tabellenformate mit Datentabellen. Für jede Tabelle können Sie nur ein einzelnes Tabellenformat definieren, und ebenso kann in einem bestimmten Tabellenformat für jede Spalte nur ein Spaltenformat definiert werden. Diese Beziehung wird in der MappingName-Eigenschaft der jeweiligen Spalte definiert.
Wenn Sie ein Tabellenformat ohne Spaltenformate erstellen, werden diesem Tabellenformat von Visual Studio Standardspaltenformate hinzugefügt, wenn Formular und Datenblatt zur Laufzeit erstellt werden. Wenn Sie jedoch ein Tabellenformat erstellen und diesem Spaltenformate hinzufügen, werden von Visual Studio keine Spaltenformate erstellt. Des Weiteren müssen Sie Spaltenformate definieren und diese mit dem Zuordnungsnamen zuweisen, damit die gewünschten Spalten auf dem Datenblatt angezeigt werden.
Da Sie die Spalten auf dem Datenblatt angeben, indem Sie diesen ein Spaltenformat zuweisen, den Spalten jedoch kein Spaltenformat zugewiesen wurde, können Sie im DataSet Datenspalten einfügen, die nicht auf dem Datenblatt angezeigt werden. Da die Datenspalte jedoch im DataSet enthalten ist, können Sie die nicht angezeigten Daten programmgesteuert bearbeiten.
Hinweis: |
---|
Erstellen Sie generell Spaltenformate, und fügen Sie sie der Auflistung der Spaltenformate hinzu, bevor Sie die Tabellenformate der Auflistung der Tabellenformate hinzufügen. Wenn Sie der Auflistung ein leeres Tabellenformat hinzufügen, werden die Spaltenformate automatisch generiert. Infolgedessen wird eine Ausnahme bei dem Versuch ausgelöst, der Auflistung der Spaltenformate neue Spaltenformate mit doppelten MappingName-Werten hinzuzufügen. Sie können bei Bedarf eine einzelne Spalte aus einer großen Anzahl von Spalten bearbeiten. Beispielsweise möchten Sie aus einem DataSet mit 50 Spalten nur 49 Spalten übernehmen. In diesem Fall ist es viel sinnvoller, die gesamten 50 Spalten zu importieren und die einzelne Spalte programmgesteuert zu entfernen, als die gewünschten 49 Spalten einzeln hinzuzufügen. |
Formatierung
Zu den Formatierungen, die dem DataGrid-Steuerelement zugewiesen werden können, gehören die Rahmenart, der Rasterlinienstil, die Schriftart, die Beschriftungseigenschaft, die Datenausrichtung sowie alternative Hintergrundfarben zwischen Zeilen. Weitere Informationen finden Sie unter Gewusst wie: Formatieren des DataGrid-Steuerelements in Windows Forms.
Ereignisse
Neben den allgemeinen Steuerelementereignissen wie MouseDown, Enter und Scroll unterstützt das DataGrid-Steuerelement auch Ereignisse im Zusammenhang mit der Bearbeitung und der Navigation innerhalb des Datenblatts. Durch die CurrentCell-Eigenschaft wird festgelegt, welche Zelle ausgewählt ist. Das CurrentCellChanged-Ereignis wird ausgelöst, wenn der Benutzer zu einer anderen Zelle wechselt. Wenn der Benutzer über hierarchische Beziehungen zu einer neuen Tabelle navigiert, wird das Navigate-Ereignis ausgelöst. Das BackButtonClick-Ereignis wird ausgelöst, wenn der Benutzer beim Anzeigen untergeordneter Tabellen auf die Schaltfläche Zurück klickt. Das ShowParentDetailsButtonClick-Ereignis wird beim Klicken auf das Symbol zum Ein- und Ausblenden von übergeordneten Zeilen ausgelöst.
Siehe auch
Aufgaben
Gewusst wie: Binden des DataGrid-Steuerelements in Windows Forms an eine Datenquelle
Gewusst wie: Hinzufügen von Tabellen und Spalten zum DataGrid-Steuerelement in Windows Forms
Gewusst wie: Löschen oder Ausblenden von Spalten aus dem DataGrid-Steuerelement in Windows Forms
Gewusst wie: Formatieren des DataGrid-Steuerelements in Windows Forms