Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Behandlung von Fehlern aus dem zugrunde liegenden Datenspeicher ist ein erforderliches Feature für eine Dateneingabeanwendung. Das Windows Forms-Steuerelement DataGridView vereinfacht diese Aufgabe, indem es das DataError-Ereignis zur Verfügung stellt. Dieses Ereignis wird ausgelöst, wenn der Datenspeicher eine Einschränkungsverletzung oder einen Verstoß gegen eine Geschäftsregel feststellt.
In dieser exemplarischen Vorgehensweise werden Sie Zeilen aus der Tabelle Customers
in der Northwind-Beispieldatenbank abrufen und in einem DataGridView-Steuerelement anzeigen. Wenn ein doppelter CustomerID
-Wert in einer neuen oder bearbeiteten Zeile erkannt wird, wird das Ereignis DataError ausgelöst, das durch die Anzeige einer MessageBox mit der Beschreibung der Ausnahme behandelt wird.
Wenn Sie den Code in diesem Artikel als einzelnes Listing kopieren möchten, lesen Sie Behandeln von Fehlern, die während der Dateneingabe im DataGridView-Steuerelement in Windows Forms auftreten.
Voraussetzungen
Für die Durchführung dieser exemplarischen Vorgehensweise benötigen Sie Folgendes:
- Zugriff auf einen Server mit der Northwind SQL Server-Beispieldatenbank.
Erstellen des Formulars
Behandeln von Dateneingabefehlern im DataGridView-Steuerelement
Erstellen Sie eine Klasse, die von Form abgeleitet wird, und enthält ein DataGridView Steuerelement und eine BindingSource Komponente.
Das folgende Codebeispiel stellt eine grundlegende Initialisierung bereit und enthält eine
Main
Methode.using System; using System.Data; using System.Data.SqlClient; using System.Windows.Forms; public class Form1 : System.Windows.Forms.Form { private DataGridView dataGridView1 = new DataGridView(); private BindingSource bindingSource1 = new BindingSource(); public Form1() { // Initialize the form. this.dataGridView1.Dock = DockStyle.Fill; this.Controls.Add(dataGridView1); this.Load += new EventHandler(Form1_Load); }
Imports System.Data Imports System.Data.SqlClient Imports System.Windows.Forms Public Class Form1 Inherits System.Windows.Forms.Form Private WithEvents dataGridView1 As New DataGridView() Private bindingSource1 As New BindingSource() Public Sub New() ' Initialize the form. Me.dataGridView1.Dock = DockStyle.Fill Me.Controls.Add(dataGridView1) End Sub
[STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new Form1()); } }
<STAThread()> _ Shared Sub Main() Application.EnableVisualStyles() Application.Run(New Form1()) End Sub End Class
Implementieren Sie eine Methode in der Klassendefinition Ihres Formulars für die Verarbeitung der Details zum Herstellen einer Verbindung mit der Datenbank.
In diesem Codebeispiel wird eine
GetData
-Methode verwendet, die ein ausgefülltes DataTable -Objekt zurückgibt. Stellen Sie sicher, dass Sie dieconnectionString
Variable auf einen Wert festlegen, der für Ihre Datenbank geeignet ist.Von Bedeutung
Das Speichern vertraulicher Informationen, z. B. eines Kennworts, innerhalb der Verbindungszeichenfolge kann sich auf die Sicherheit Ihrer Anwendung auswirken. Die Verwendung der Windows-Authentifizierung (auch als integrierte Sicherheit bezeichnet) ist eine sicherere Möglichkeit, den Zugriff auf eine Datenbank zu steuern. Weitere Informationen finden Sie unter Schützen von Verbindungsinformationen.
private static DataTable GetData(string selectCommand) { string connectionString = "Integrated Security=SSPI;Persist Security Info=False;" + "Initial Catalog=Northwind;Data Source=localhost;Packet Size=4096"; // Connect to the database and fill a data table, including the // schema information that contains the CustomerID column // constraint. SqlDataAdapter adapter = new SqlDataAdapter(selectCommand, connectionString); DataTable data = new DataTable(); data.Locale = System.Globalization.CultureInfo.InvariantCulture; adapter.Fill(data); adapter.FillSchema(data, SchemaType.Source); return data; }
Private Shared Function GetData(ByVal selectCommand As String) As DataTable Dim connectionString As String = _ "Integrated Security=SSPI;Persist Security Info=False;" + _ "Initial Catalog=Northwind;Data Source=localhost;Packet Size=4096" ' Connect to the database and fill a data table, including the ' schema information that contains the CustomerID column ' constraint. Dim adapter As New SqlDataAdapter(selectCommand, connectionString) Dim data As New DataTable() data.Locale = System.Globalization.CultureInfo.InvariantCulture adapter.Fill(data) adapter.FillSchema(data, SchemaType.Source) Return data End Function
Implementieren Sie einen Handler für das Load-Ereignis Ihres Formulars, das die DataGridView und die BindingSource initialisiert und die Datenbindung einrichtet.
private void Form1_Load(System.Object sender, System.EventArgs e) { // Attach the DataError event to the corresponding event handler. this.dataGridView1.DataError += new DataGridViewDataErrorEventHandler(dataGridView1_DataError); // Initialize the BindingSource and bind the DataGridView to it. bindingSource1.DataSource = GetData("select * from Customers"); this.dataGridView1.DataSource = bindingSource1; this.dataGridView1.AutoResizeColumns( DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader); }
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Me.Load ' Initialize the BindingSource and bind the DataGridView to it. bindingSource1.DataSource = GetData("select * from Customers") Me.dataGridView1.DataSource = bindingSource1 Me.dataGridView1.AutoResizeColumns( _ DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader) End Sub
Behandeln Sie das DataError-Ereignis für die DataGridView.
Wenn der Fehlerkontext ein Commitvorgang ist, zeigen Sie den Fehler in einer MessageBox an.
private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e) { // If the data source raises an exception when a cell value is // commited, display an error message. if (e.Exception != null && e.Context == DataGridViewDataErrorContexts.Commit) { MessageBox.Show("CustomerID value must be unique."); } }
Private Sub dataGridView1_DataError(ByVal sender As Object, _ ByVal e As DataGridViewDataErrorEventArgs) _ Handles dataGridView1.DataError ' If the data source raises an exception when a cell value is ' commited, display an error message. If e.Exception IsNot Nothing AndAlso _ e.Context = DataGridViewDataErrorContexts.Commit Then MessageBox.Show("CustomerID value must be unique.") End If End Sub
Testen der Anwendung
Sie können das Formular jetzt testen, um sicherzustellen, dass es sich wie erwartet verhält.
So testen Sie das Formular
Drücken Sie F5, um die Anwendung auszuführen.
Es wird ein DataGridView-Steuerelement angezeigt, das mit Daten aus der Customers-Tabelle gefüllt ist. Wenn Sie einen doppelten Wert für
CustomerID
eingeben und die Bearbeitung committen, wird der Wert der Zelle automatisch zurückgesetzt, und Sie sehen eine MessageBox, die den Dateneingabefehler anzeigt.
Nächste Schritte
Diese Anwendung vermittelt Ihnen ein grundlegendes Verständnis der Möglichkeiten des DataGridView-Steuerelements. Sie können das Erscheinungsbild und Verhalten des DataGridView Steuerelements auf verschiedene Arten anpassen:
Ändern Sie Rahmen- und Kopfzeilenstile. Weitere Informationen finden Sie unter Ändern des Rahmen- und Rasterlinienstils im DataGridView-Steuerelement in Windows Forms.
Aktivieren oder Einschränken von Benutzereingaben für das Steuerelement DataGridView. Weitere Informationen finden Sie unter So geht's: Verhindern von Zeilenhinzufügung und -löschung im Windows Forms DataGridView-Steuerelement, und So geht's: Spalten erstellen Read-Only im Windows Forms DataGridView-Steuerelement.
Überprüfen Sie die Benutzereingabe für das DataGridView-Steuerelement. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Validieren von Daten im DataGridView-Steuerelement in Windows Forms.
Behandeln Sie sehr große Datensätze im virtuellen Modus. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Implementieren des virtuellen Modus im DataGridView-Steuerelement in Windows Forms.
Passen Sie die Darstellung von Zellen an. Weitere Informationen finden Sie unter Anpassen der Darstellung von Zellen im DataGridView-Steuerelement von Windows Forms und Festlegen von Standardzellenformaten für das DataGridView-Steuerelement von Windows Forms.
Siehe auch
- DataGridView
- BindingSource
- Dateneingabe im DataGridView-Steuerelement in Windows Forms
- Behandeln von Fehlern, die während der Dateneingabe im DataGridView-Steuerelement in Windows Forms auftreten
- Exemplarische Vorgehensweise: Validieren von Daten im DataGridView-Steuerelement in Windows Forms
- Schützen von Verbindungsinformationen
.NET Desktop feedback