Procédure pas à pas : gestion des erreurs qui se produisent lors de la saisie de données dans le contrôle DataGridView Windows Forms
La gestion des erreurs à partir du magasin de données sous-jacent est une fonctionnalité requise pour une application d’entrée de données. Le contrôle Windows Forms DataGridView facilite cette opération en exposant l’événement DataError , qui est déclenché lorsque le magasin de données détecte une violation de contrainte ou une règle métier rompue.
Dans cette procédure pas à pas, vous allez récupérer des lignes de la Customers
table dans l’exemple de base de données Northwind et les afficher dans un DataGridView contrôle. Lorsqu’une valeur en double CustomerID
est détectée dans une nouvelle ligne ou une ligne existante modifiée, l’événement DataError se produit, qui sera géré en affichant une MessageBox exception qui décrit l’exception.
Pour copier le code de cette rubrique sous la forme d’une liste unique, consultez Guide pratique pour gérer les erreurs qui se produisent pendant l’entrée de données dans le contrôle DataGridView Windows Forms.
Prérequis
Pour réaliser cette procédure pas à pas, vous aurez besoin des éléments suivants :
- Accès à un serveur doté de l’exemple de base de données Northwind SQL Server.
Création du formulaire
Pour gérer les erreurs d’entrée de données dans le contrôle DataGridView
Créez une classe qui dérive d’un FormDataGridView contrôle et d’un BindingSource composant.
L’exemple de code suivant fournit une initialisation de base et inclut une
Main
méthode.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
Implémentez une méthode dans la définition de classe de votre formulaire pour gérer les détails de la connexion à la base de données.
Cet exemple de code utilise une
GetData
méthode qui retourne un objet rempli DataTable . Veillez à définir laconnectionString
variable sur une valeur appropriée pour votre base de données.Important
Le stockage d'informations sensibles (telles qu'un mot de passe) dans la chaîne de connexion peut affecter la sécurité de votre application. L'utilisation de l'authentification Windows (également appelée sécurité intégrée) offre un moyen plus sûr de contrôler l'accès à une base de données. Pour plus d’informations, consultez Protection des informations de connexion.
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
Implémentez un gestionnaire pour l’événement de Load votre formulaire qui initialise et DataGridViewBindingSource configure la liaison de données.
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
Gérez l’événement DataError sur le DataGridView.
Si le contexte de l’erreur est une opération de validation, affichez l’erreur dans un MessageBox.
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
Test de l’application
Vous pouvez maintenant tester le formulaire pour vous assurer qu’il se comporte comme prévu.
Pour tester le formulaire
Appuyez sur F5 pour exécuter l'application.
Vous verrez un DataGridView contrôle rempli de données de la table Customers. Si vous entrez une valeur en double pour
CustomerID
et validez la modification, la valeur de la cellule est rétablie automatiquement et vous verrez un MessageBox message qui affiche l’erreur d’entrée de données.
Étapes suivantes
Cette application vous donne une compréhension de base des DataGridView fonctionnalités du contrôle. Vous pouvez personnaliser l’apparence et le comportement du DataGridView contrôle de plusieurs façons :
Modifier les styles de bordure et d’en-tête. Pour plus d’informations, consultez How to : Change the Border and Gridline Styles in the Windows Forms DataGridView Control.
Activez ou limitez l’entrée utilisateur au DataGridView contrôle. Pour plus d’informations, consultez How to : Prevent Row Addition and Deletion in the Windows Forms DataGridView Control, and How to : Make Columns Read-Only in the Windows Forms DataGridView Control.
Validez l’entrée de l’utilisateur dans le DataGridView contrôle. Pour plus d’informations, consultez Procédure pas à pas : validation des données dans le contrôle DataGridView Windows Forms.
Gérez des jeux de données très volumineux à l’aide du mode virtuel. Pour plus d’informations, consultez Procédure pas à pas : implémentation du mode virtuel dans le contrôle DataGridView Windows Forms.
Personnalisez l’apparence des cellules. Pour plus d’informations, consultez How to : Customize the Appearance of Cells in the Windows Forms DataGridView Control and How to : Set Default Cell Styles for the Windows Forms DataGridView Control.
Voir aussi
- DataGridView
- BindingSource
- Saisie de données dans le contrôle DataGridView Windows Forms
- Guide pratique pour gérer les erreurs qui se produisent lors de l'entrée de données dans le contrôle DataGridView Windows Forms
- Procédure pas à pas : validation des données dans le contrôle DataGridView Windows Forms
- Protection des informations de connexion
.NET Desktop feedback
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour