Verwenden der Zeile für neue Datensätze im DataGridView-Steuerelement in Windows Forms
Wenn Sie zur Bearbeitung von Daten in der Anwendung eine DataGridView verwenden, möchten Sie den Benutzern häufig die Möglichkeit geben, neue Datenzeilen zum Datastore hinzuzufügen. Das DataGridView-Steuerelement unterstützt diese Funktionalität, indem es eine Zeile für neue Datensätze bereitstellt, die stets als letzte Zeile angezeigt wird. Sie ist mit einem Sternchensymbol (*) im Zeilenheader gekennzeichnet. In den folgenden Abschnitten werden einige der Punkte erörtert, die Sie beim Programmieren beachten sollten, wenn die Zeile für neue Datensätze aktiviert ist.
Anzeigen der Zeile für neue Datensätze
Verwenden Sie die AllowUserToAddRows-Eigenschaft, um anzugeben, ob die Zeile für neue Datensätze angezeigt wird. Der Standardwert dieser Eigenschaft ist true.
Bei gebundenen Daten wird die Zeile für neue Datensätze angezeigt, wenn die AllowUserToAddRows-Eigenschaft des Steuerelements und die IBindingList.AllowNew-Eigenschaft der Datenquelle beide auf true festgelegt sind. Wenn eine der Eigenschaften auf false festgelegt ist, wird die Zeile nicht angezeigt.
Füllen der Zeile für neue Datensätze mit Standarddaten
Wenn der Benutzer die Zeile für neue Datensätze als aktuelle Zeile auswählt, löst das DataGridView-Steuerelement das DefaultValuesNeeded-Ereignis aus.
Dieses Ereignis ermöglicht den Zugriff auf die neue DataGridViewRow sowie das Füllen der neuen Zeile mit Standarddaten. Weitere Informationen finden Sie unter Gewusst wie: Angeben von Standardwerten für neue Zeilen im DataGridView-Steuerelement in Windows Forms
Die Zeilenauflistung
Die Zeile für neue Datensätze ist in der Rows-Auflistung des DataGridView-Steuerelements enthalten, verhält sich aber in zweierlei Hinsicht verschieden:
Die Zeile für neue Datensätze kann nicht programmgesteuert aus der Rows-Auflistung entfernt werden. Bei dem Versuch wird eine InvalidOperationException ausgelöst. Der Benutzer kann außerdem nicht die Zeile für neue Datensätze löschen. Die DataGridViewRowCollection.Clear-Methode entfernt diese Zeile nicht aus der Rows-Auflistung.
Nach der Zeile für neue Datensätze kann keine Zeile hinzugefügt werden. Bei dem Versuch wird eine InvalidOperationException ausgelöst. Demzufolge ist die Zeile für neue Datensätze immer die letzte Zeile im DataGridView-Steuerelement. Die Methoden für die DataGridViewRowCollection, mit denen Zeilen hinzugefügt werden, nämlich Add, AddCopy und AddCopies, rufen intern Einfügungsmethoden auf, wenn die Zeile für neue Datensätze vorhanden ist.
Visuelle Anpassung der Zeile für neue Datensätze
Wenn die Zeile für neue Datensätze erstellt wird, basiert sie auf der Zeile, die durch die RowTemplate-Eigenschaft angegeben wird. Alle Zellenstile, die nicht für diese Zeile angegeben sind, werden von anderen Eigenschaften geerbt. Weitere Informationen über Zellenstilvererbung finden Sie unter Zellstile im DataGridView-Steuerelement in Windows Forms.
Die Anfangswerte der Zellen in der Zeile für neue Datensätze werden aus der DefaultNewRowValue-Eigenschaft der jeweiligen Zellen abgerufen. Bei Zellen des Typs DataGridViewImageCell gibt diese Eigenschaft ein Platzhalterbild zurück. Andernfalls gibt diese Eigenschaft null zurück. Sie können diese Eigenschaft überschreiben, um einen benutzerdefinierten Wert zurückzugeben. Diese Anfangswerte können jedoch durch einen DefaultValuesNeeded-Ereignishandler ersetzt werden, wenn die Zeile für neue Datensätze den Fokus hat.
Die Standardsymbole für den Header dieser Zeile, ein Pfeil oder ein Sternchen, werden nicht öffentlich verfügbar gemacht. Wenn Sie die Symbole anpassen möchten, müssen Sie eine benutzerdefinierte DataGridViewRowHeaderCell-Klasse erstellen.
Die Standardsymbole verwenden die ForeColor-Eigenschaft des DataGridViewCellStyle der Zeilenheaderzelle. Die Standardsymbole werden nicht gerendert, wenn nicht genug Platz vorhanden ist, um sie vollständig anzuzeigen.
Wenn für die Zeilenheaderzelle ein Zeichenfolgenwert festgelegt ist und nicht genug Platz für den Text und das Symbol ist, wird das Symbol nicht angezeigt.
Sortieren
Im ungebundenen Modus werden neue Datensätze stets am Ende der DataGridView hinzugefügt, auch wenn der Benutzer den Inhalt der DataGridView sortiert hat. Der Benutzer muss erneut sortieren, damit die Zeile in der richtigen Position angezeigt wird. Dieses Verhalten ist vergleichbar mit dem des ListView-Steuerelements.
Im datengebundenen und virtuellen Modus hängt das Einfügeverhalten beim Sortieren von der Implementierung des Datenmodells ab. Für ADO.NET wird die Zeile sofort richtig sortiert.
Andere Hinweise zur Zeile für neue Datensätze
Sie können die Visible-Eigenschaft dieser Zeile nicht auf false festlegen. Bei dem Versuch wird eine InvalidOperationException ausgelöst.
Die Zeile für neue Datensätze wird immer im nicht ausgewählten Zustand erstellt.
Virtueller Modus
Wenn Sie den virtuellen Modus implementieren, müssen Sie verfolgen, wann eine Zeile für neue Datensätze im Datenmodell erforderlich ist und wann sie wieder entfernt werden kann. Die genaue Implementierung dieser Funktion hängt von der Implementierung des Datenmodells und seiner Transaktionssemantik ab, beispielsweise ob sich der Commit-Bereich auf Zellenebene oder Zeilenebene befindet. Weitere Informationen finden Sie unter Virtueller Modus im DataGridView-Steuerelement in Windows Forms.
Siehe auch
Aufgaben
Referenz
DataGridView.DefaultValuesNeeded