Walkthrough: Validating Data in the Windows Forms DataGridView Control
When you display data entry functionality to users, you frequently have to validate the data entered into your form. The DataGridView class provides a convenient way to perform validation before data is committed to the data store. You can validate data by handling the CellValidating event, which is raised by the 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 DataGridView control. When a user edits a cell in the CompanyName column and tries to leave the cell, the 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 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.
To validate data entered in a DataGridView
The following code example provides basic initialization and includes a Main method.
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 DataTable object. Be sure that you set the connectionString variable to a value that is appropriate for your database.
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 (ADO.NET).
The 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 Cancel property of the System.Windows.Forms::DataGridViewCellValidatingEventArgs class to true. This causes the DataGridView control to prevent the cursor from leaving the cell. Set the ErrorText property on the row to an explanatory string. This displays an error icon with a ToolTip that contains the error text. In the CellEndEdit event handler, set the ErrorText property on the row to the empty string. The CellEndEdit event occurs only when the cell exits edit mode, which it cannot do if it fails validation.
You can now test the form to make sure it behaves as expected.
To test the form
Compile and run the application.
You will see a DataGridView filled with data from the Customers table. When you double-click a cell in the CompanyName column, you can edit the value. If you delete all the characters and hit the TAB key to exit the cell, the DataGridView prevents you from exiting. When you type a non-empty string into the cell, the DataGridView control lets you exit the cell.
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 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.