title | description | ms.date | dev_langs | helpviewer_keywords | ms.assetid | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Walkthrough: Validate data in DataGridView control |
Learn about and walk through the process of validating data in DataGridView control before it is committed to the data store. |
03/30/2017 |
|
|
a4f1d015-2969-430c-8ea2-b612d179c290 |
When you display data entry functionality to users, you frequently have to validate the data entered into your form. The xref:System.Windows.Forms.DataGridView class provides a convenient way to perform validation before data is committed to the data store. You can validate data by handling the xref:System.Windows.Forms.DataGridView.CellValidating event, which is raised by the xref:System.Windows.Forms.DataGridView when the current cell changes.
In this walkthrough, you will retrieve rows from the Customers
table in the Northwind sample database and display them in a xref:System.Windows.Forms.DataGridView control. When a user edits a cell in the CompanyName
column and tries to leave the cell, the xref:System.Windows.Forms.DataGridView.CellValidating event handler will examine new company name string to make sure it is not empty; if the new value is an empty string, the xref:System.Windows.Forms.DataGridView will prevent the user's cursor from leaving the cell until a non-empty string is entered.
To copy the code in this topic as a single listing, see How to: Validate Data in the Windows Forms DataGridView Control.
In order to complete this walkthrough, you will need:
- Access to a server that has the Northwind SQL Server sample database.
-
Create a class that derives from xref:System.Windows.Forms.Form and contains a xref:System.Windows.Forms.DataGridView control and a xref:System.Windows.Forms.BindingSource component.
The following code example provides basic initialization and includes a
Main
method.[!code-csharpSystem.Windows.Forms.DataGridViewDataValidation#01] [!code-vbSystem.Windows.Forms.DataGridViewDataValidation#01] [!code-csharpSystem.Windows.Forms.DataGridViewDataValidation#02] [!code-vbSystem.Windows.Forms.DataGridViewDataValidation#02]
-
Implement a method in your form's class definition for handling the details of connecting to the database.
This code example uses a
GetData
method that returns a populated xref:System.Data.DataTable object. Be sure that you set theconnectionString
variable to a value that is appropriate for your database.[!IMPORTANT] Storing sensitive information, such as a password, within the connection string can affect the security of your application. Using Windows Authentication, also known as integrated security, is a more secure way to control access to a database. For more information, see Protecting Connection Information.
[!code-csharpSystem.Windows.Forms.DataGridViewDataValidation#30] [!code-vbSystem.Windows.Forms.DataGridViewDataValidation#30]
-
Implement a handler for your form's xref:System.Windows.Forms.Form.Load event that initializes the xref:System.Windows.Forms.DataGridView and xref:System.Windows.Forms.BindingSource and sets up the data binding.
[!code-csharpSystem.Windows.Forms.DataGridViewDataValidation#10] [!code-vbSystem.Windows.Forms.DataGridViewDataValidation#10]
-
Implement handlers for the xref:System.Windows.Forms.DataGridView control's xref:System.Windows.Forms.DataGridView.CellValidating and xref:System.Windows.Forms.DataGridView.CellEndEdit events.
The xref:System.Windows.Forms.DataGridView.CellValidating event handler is where you determine whether the value of a cell in the
CompanyName
column is empty. If the cell value fails validation, set the xref:System.ComponentModel.CancelEventArgs.Cancel%2A property of the xref:System.Windows.Forms.DataGridViewCellValidatingEventArgs?displayProperty=nameWithType class totrue
. This causes the xref:System.Windows.Forms.DataGridView control to prevent the cursor from leaving the cell. Set the xref:System.Windows.Forms.DataGridViewRow.ErrorText%2A property on the row to an explanatory string. This displays an error icon with a ToolTip that contains the error text. In the xref:System.Windows.Forms.DataGridView.CellEndEdit event handler, set the xref:System.Windows.Forms.DataGridViewRow.ErrorText%2A property on the row to the empty string. The xref:System.Windows.Forms.DataGridView.CellEndEdit event occurs only when the cell exits edit mode, which it cannot do if it fails validation.[!code-csharpSystem.Windows.Forms.DataGridViewDataValidation#20] [!code-vbSystem.Windows.Forms.DataGridViewDataValidation#20]
You can now test the form to make sure it behaves as expected.
-
Compile and run the application.
You will see a xref:System.Windows.Forms.DataGridView filled with data from the
Customers
table. When you double-click a cell in theCompanyName
column, you can edit the value. If you delete all the characters and hit the TAB key to exit the cell, the xref:System.Windows.Forms.DataGridView prevents you from exiting. When you type a non-empty string into the cell, the xref:System.Windows.Forms.DataGridView control lets you exit the cell.
This application gives you a basic understanding of the xref:System.Windows.Forms.DataGridView control's capabilities. You can customize the appearance and behavior of the xref:System.Windows.Forms.DataGridView control in several ways:
-
Change border and header styles. For more information, see How to: Change the Border and Gridline Styles in the Windows Forms DataGridView Control.
-
Enable or restrict user input to the xref:System.Windows.Forms.DataGridView control. For more information, see 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.
-
Check user input for database-related errors. For more information, see Walkthrough: Handling Errors that Occur During Data Entry in the Windows Forms DataGridView Control.
-
Handle very large data sets using virtual mode. For more information, see Walkthrough: Implementing Virtual Mode in the Windows Forms DataGridView Control.
-
Customize the appearance of cells. For more information, see How to: Customize the Appearance of Cells in the Windows Forms DataGridView Control and How to: Set Font and Color Styles in the Windows Forms DataGridView Control.
- xref:System.Windows.Forms.DataGridView
- xref:System.Windows.Forms.BindingSource
- Data Entry in the Windows Forms DataGridView Control
- How to: Validate Data in the Windows Forms DataGridView Control
- Walkthrough: Handling Errors that Occur During Data Entry in the Windows Forms DataGridView Control
- Protecting Connection Information