Freigeben über


Übersicht über das DataGrid-Steuerelement (Windows Forms)

Hinweis

Obwohl das DataGridView-Steuerelement das DataGrid-Steuerelement ersetzt und funktionell erweitert, 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. Der einfachste Fall liegt vor, wenn das Raster an eine Datenquelle gebunden ist, die aus einer einzigen Tabelle ohne Beziehungen besteht. In diesem Fall werden die Daten wie in einer Kalkulationstabelle in einfachen Zeilen und Spalten angezeigt. Weitere Informationen über die Bindung von Daten an andere Steuerelemente finden Sie unter Datenbindung und Windows Forms.

Wenn das DataGrid-Steuerelement an Daten mit mehreren verknüpften Tabellen gebunden ist und die Navigation für das Raster aktiviert ist, werden in jeder Zeile des Rasters Erweiterungen angezeigt. Mit einer Erweiterung kann der Benutzer von einer übergeordneten Tabelle zu einer untergeordneten Tabelle navigieren. Durch Klicken auf einen Knoten wird die untergeordnete Tabelle angezeigt, und durch Klicken auf die Schaltfläche "Zurück" wird die ursprüngliche übergeordnete Tabelle angezeigt. Auf diese Weise zeigt das Raster die hierarchischen Beziehungen zwischen Tabellen an.

Im folgenden Screenshot ist ein an Daten mit mehreren Tabellen gebundenes DataGrid-Steuerelement dargestellt:

A WinForms app showing a DataGrid bound to data with multiple tables.

Das DataGrid-Steuerelement kann eine Benutzeroberfläche für ein DataSet, die Navigation zwischen verknüpften Tabellen sowie umfangreiche Formatierungs- und Bearbeitungsfunktionen bereitstellen.

Anzeige und Bearbeitung von Daten sind getrennte Aufgaben: Das Steuerelement verwaltet die Benutzeroberfläche, während Datenaktualisierungen von der Windows Forms-Datenbindungsarchitektur und von .NET Framework-Datenanbietern übernommen werden. Aus diesem Grund werden mehrere Steuerelemente, die an die gleiche Datenquelle gebunden sind, immer synchronisiert.

Hinweis

Wenn Sie mit dem DataGrid-Steuerelement in Visual Basic 6.0 vertraut sind, werden Ihnen beim DataGrid-Steuerelement in Windows Forms wesentliche Unterschiede auffallen.

Wenn das Raster an ein DataSet gebunden ist, werden die Spalten und Zeilen automatisch erstellt, formatiert und gefüllt. Weitere Informationen finden Sie unter Data Binding and Windows Forms. Nach dem Generieren des DataGrid-Steuerelements können Sie Spalten und Zeilen Ihren Anforderungen entsprechend 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. Diese Bindung verweist das DataGrid-Steuerelement auf ein instanziiertes Datenquellenobjekt, beispielsweise auf ein DataSet oder eine DataTable. Das DataGrid-Steuerelement zeigt die Ergebnisse der für die Daten ausgeführten Aktionen an. Die meisten datenspezifischen Aktionen werden nicht vom DataGrid-Steuerelement, sondern von der Datenquelle ausgeführt.

Wenn die Daten im gebundenen DataSet auf beliebige Weise aktualisiert werden, spiegelt das DataGrid -Steuerelement die Änderungen wider. Wenn für das Datenraster und dessen Tabellen- und Spaltenformate die ReadOnly-Eigenschaft auf false festgelegt ist, können die Daten im Dataset über das DataGrid-Steuerelement aktualisiert werden.

Es kann jeweils nur eine Tabelle im DataGrid angezeigt werden. Wenn zwischen Tabellen Beziehungen zwischen über- und untergeordneten Elementen definiert sind, kann der 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 Entwurfs- oder Laufzeit finden Sie unter Vorgehensweise: Binden des DataGrid-Steuerelements in Windows Forms an eine Datenquelle.

Gültige Datenquellen für das DataGrid-Steuerelement umfassen Folgendes:

Wenn es sich bei der Quelle um ein DataSet handelt, kann das DataSet ein Objekt im Formular oder ein Objekt sein, das von einem XML-Webdienst an das Formular übergeben wurde. Sie können das Steuerelement an typisierte oder nicht typisierte DataSets binden.

Sie können ein DataGrid-Steuerelement auch an zusätzliche Strukturen binden, wenn die Objekte in der Struktur, beispielsweise die Elemente in einem Array, öffentliche Eigenschaften anzeigen. Im Raster werden alle öffentlichen Eigenschaften der Elemente in der Struktur angezeigt. Wenn Sie z. B. das DataGrid-Steuerelement an ein Array von Customer-Objekten binden, werden im Raster alle öffentlichen Eigenschaften dieser Customer-Objekte angezeigt. In einigen Fällen bedeutet dies, dass zwar eine Bindung an die Struktur möglich ist, aber die resultierende gebundene Struktur keine praktische Anwendung findet. So ist beispielsweise die Bindung an ein Array von Ganzzahlen möglich, aber weil der Datentyp Integer keine öffentlichen Eigenschaften unterstützt, kann das Raster keine Daten anzeigen.

Sie können an die folgenden Strukturen binden, wenn die zugehörigen Elemente öffentliche Eigenschaften anzeigen:

  • Komponenten, die die IList-Schnittstelle implementieren. Dazu gehören eindimensionale Arrays.

  • Komponenten, die die IListSource-Schnittstelle implementieren.

  • 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 zum Anzeigen einer einzelnen Tabelle mit Daten aus einem DataSet verwendet. Das Steuerelement kann jedoch auch zum Anzeigen mehrerer Tabellen (einschließlich verknüpfter Tabellen) verwendet werden. Die Anzeige des Rasters wird automatisch an die Datenquelle angepasst. Der folgenden Tabelle können Sie entnehmen, was für verschiedene Konfigurationen angezeigt wird.

Inhalt des DataSets Anzeige
Einzelne Tabelle Die Tabelle wird in einem Raster angezeigt.
Mehrere Tabellen Im Raster kann eine Strukturansicht angezeigt werden, in der Benutzer navigieren können, um nach der anzuzeigenden Tabelle zu suchen.
Mehrere verknüpfte Tabellen Im Raster kann eine Strukturansicht angezeigt werden, in der Tabellen ausgewählt werden können. Sie können aber auch angeben, dass im Raster die übergeordnete Tabelle angezeigt werden soll. Mithilfe von Datensätzen in der übergeordneten Tabelle können Benutzer zu den entsprechenden untergeordneten Zeilen navigieren.

Hinweis

Tabellen in einem DataSet werden mithilfe eines DataRelation-Objekts verknüpft. Weitere Informationen finden Sie auch unter Erstellen von Beziehungen zwischen Datasets.

Wenn das DataGrid-Steuerelement eine Tabelle anzeigt und die AllowSorting-Eigenschaft auf true festgelegt ist, können die Daten durch Klicken auf die Spaltenheader sortiert werden. Der Benutzer kann auch Zeilen hinzufügen und Zellen bearbeiten.

Die Beziehungen zwischen mehreren Tabellen werden in einer hierarchischen Navigationsstruktur (mit über-und untergeordneten Elementen) angezeigt. Übergeordnete Tabellen befinden sich auf der obersten Datenebene, und untergeordnete Tabellen stellen Datentabellen dar, die von den jeweiligen Auflistungen in den übergeordneten Tabellen abgeleitet werden. In allen übergeordneten Zeilen, die eine untergeordnete Tabelle enthalten, werden Erweiterungen angezeigt. Durch Klicken auf eine Erweiterung wird eine Liste mit Links zu den untergeordneten Tabellen generiert, die mit einer Liste von Weblinks vergleichbar ist. Wenn der Benutzer auf einen Link klickt, wird die untergeordnete Tabelle angezeigt. Durch Klicken auf das Symbol zum Ein- und Ausblenden von übergeordneten Zeilen (Show/hide parent rows icon) werden die Informationen zur übergeordneten Tabelle ausgeblendet bzw. wieder eingeblendet, wenn sie zuvor vom Benutzer ausgeblendet wurden. Der Benutzer kann auf die Schaltfläche "Zurück" klicken, um zur vorherigen Tabelle zurückzukehren.

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 eine Auflistung von DataGridColumnStyle-Objekten enthalten, die in der GridColumnStyles-Eigenschaft von DataGridTableStyle enthalten sind. Sie können die Eigenschaften TableStyles und GridColumnStyles mit Sammlungs-Editoren bearbeiten, auf die Sie über das Eigenschaftenfenster zugreifen.

Auf jede DataGridTableStyle-Eigenschaft, die dem DataGrid-Steuerelement zugeordnet ist, 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.

In der folgenden Abbildung sind die im DataGrid-Steuerelement enthaltenen Objekte dargestellt:

Diagram that shows objects included in the DataGrid control.

Tabellen- und Spaltenformate werden mit DataTable- 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 die MappingName-Eigenschaft dieses Tabellenformats auf eine gültige TableName-Eigenschaft festgelegt ist, wird für dieses 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. Der Zugriff auf die GridColumnStylesCollection erfolgt über die GridColumnStyles-Eigenschaft von DataGridTableStyle. Sie können dem Raster Spalten hinzufügen oder Spalten daraus löschen, indem Sie die Add- bzw. die Remove-Methode für die GridColumnStylesCollection verwenden. 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.

Eine Auflistung von Spaltentypen erweitert die DataGridColumnStyle-Klasse umfangreiche Formatierungs-und Bearbeitungsfunktionen. Alle Spaltentypen erben von der DataGridColumnStyle-Basisklasse. Die erstellte Klasse hängt von der DataType-Eigenschaft der DataColumn ab, auf der die DataGridColumn basiert. Eine DataColumn, deren DataType-Eigenschaft auf Boolean festgelegt ist, wird beispielsweise der DataGridBoolColumn zugeordnet. In der folgenden Tabelle werden die einzelnen Spaltentypen beschrieben.

Spaltentyp BESCHREIBUNG
DataGridTextBoxColumn Akzeptiert Daten und zeigt sie als formatierte oder unformatierte Zeichenfolgen an. Die Bearbeitungsfunktionen entsprechen den Funktionen für die Bearbeitung von Daten in einem einfachen TextBox. Erbt von DataGridColumnStyle.
DataGridBoolColumn 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 so geändert, dass die vollständige Beschriftung und der längste Eintrag angezeigt werden.

Tabellenformate und Spaltenformate

Sobald Sie das Standardformat des DataGrid-Steuerelements festgelegt haben, können Sie die Farben anpassen, die beim Anzeigen bestimmter Tabellen im Datenraster verwendet werden.

Erstellen Sie hierzu Instanzen der DataGridTableStyle-Klasse. Mit Tabellenformaten wird die Formatierung bestimmter Tabellen festgelegt, die sich von der Standardformatierung des DataGrid-Steuerelements unterscheidet. Für jede Tabelle kann jeweils nur ein Tabellenformat definiert werden.

In einigen Fällen kann es sich als sinnvoll erweisen, in einer bestimmten Datentabelle eine bestimmte Spalte in einem anderen Format anzuzeigen als die übrigen Spalten. Sie können einen benutzerdefinierten Satz von Spaltenformaten mit der GridColumnStyles-Eigenschaft erstellen.

Spaltenformate werden mit Spalten in einem DataSet auf die gleiche Weise verknüpft wie Tabellenformate mit Datentabellen. So wie Sie für jede Tabelle jeweils nur ein Tabellenformat definieren können, kann auch in einem bestimmten Tabellenformat für jede Spalte nur ein Spaltenformat definiert werden. Diese Beziehung wird in der MappingName-Eigenschaft der Spalte definiert.

Wenn Sie ein Tabellenformat ohne Spaltenformate erstellen, fügt Visual Studio Standardspaltenformate hinzu, wenn das Formular und das Raster zur Laufzeit erstellt werden. Wenn Sie jedoch ein Tabellenformat erstellen und diesem Spaltenformate hinzufügen, werden von Visual Studio keine Spaltenformate erstellt. Außerdem müssen Sie Spaltenformate definieren und diesen den Zuordnungsnamen zuweisen, damit die gewünschten Spalten im Raster angezeigt werden.

Da Sie die im Raster enthaltenen Spalten angeben, indem Sie diesen ein Spaltenformat zuweisen, den Spalten jedoch kein Spaltenformat zugewiesen wurde, können Sie im DataSet Datenspalten einfügen, die nicht im Raster angezeigt werden. Da die Datenspalte jedoch im DataSet enthalten ist, können Sie die nicht angezeigten Daten programmgesteuert bearbeiten.

Hinweis

Im Allgemeinen sollten Sie Spaltenformate erstellen und der Auflistung der Spaltenformate hinzufügen, bevor Sie Tabellenformate zur Auflistung der Tabellenformate hinzufügen. Wenn Sie der Auflistung ein leeres Tabellenformat hinzufügen, werden die Spaltenformate automatisch generiert. Infolgedessen wird eine Ausnahme ausgelöst, wenn Sie versuchen, der Auflistung der Spaltenformate neue Spaltenformate mit doppelten MappingName-Werten hinzuzufügen.

In einigen Fällen möchten Sie nur eine Spalte unter vielen Spalten optimieren. Beispielsweise möchten Sie in einem DataSet mit 50 Spalten nur 49 Spalten übernehmen. In diesem Fall es ist einfacher, alle 50 Spalten zu importieren und eine Spalte programmgesteuert zu entfernen, statt die gewünschten 49 Spalten einzeln programmgesteuert hinzuzufügen.

Formatierung

Zu den Formatierungen, die dem DataGrid-Steuerelement zugewiesen werden können, gehören Rahmenarten, Rasterlinienstile, Schriftarten, Beschriftungseigenschaften, 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 Navigation innerhalb des Rasters. Die CurrentCell-Eigenschaft bestimmt, welche Zelle ausgewählt wird. Das CurrentCellChanged-Ereignis wird ausgelöst, wenn der Benutzer zu einer anderen Zelle navigiert. 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 einer untergeordneten Tabelle auf die Schaltfläche "Zurück" klickt. Und das ShowParentDetailsButtonClick-Ereignis wird beim Klicken auf das Symbol zum Ein- und Ausblenden von übergeordneten Zeilen ausgelöst.

Siehe auch