How to: Validate Data During Column Changes
Validating data is the process of checking the values being entered into your application's data. Checking these values prior to sending updates to the underlying data store is a good practice that reduces the potential number of round trips between an application and the data store.
Note
The Dataset Designer creates a partial class where validation logic can be added to a dataset. The designer-generated dataset will not delete or change any code in the partial class. For more information, see How to: Extend the Functionality of a Dataset.
You can validate data when the value in a data column changes by responding to the ColumnChanging event. When raised, this event passes an event argument (ProposedValue) that contains the value being proposed for the current column. Based on the contents of e.ProposedValue, you can:
Accept the proposed value by doing nothing.
Reject the proposed value by setting the column error (SetColumnError) from within the column-changing event handler.
Optionally use an ErrorProvider control to display an error message to the user. For more information, see ErrorProvider Component (Windows Forms).
Validation can also be performed during the RowChanging event. For more information, see How to: Validate Data During Row Changes.
To validate data as column values change
Open your dataset in the Dataset Designer. For more information, see How to: Open a Dataset in the Dataset Designer.
Double-click the column you want to validate. This action creates the ColumnChanging event handler of the DataTable.
Note
The Dataset Designer does not automatically create an event handler for the C# event. The code needed to handle the event is included below.
Add code to verify that e.ProposedValue contains data that meets the requirements of your application. If the proposed value is unacceptable, then set the column to indicate that it contains an error.
The following code example sets a column error when the Quantity column is 0 or less. The column-changing event handler should look similar to the following:
'Visual Basic Private Sub Order_DetailsDataTable_ColumnChanging(ByVal sender As System.Object, ByVal e As System.Data.DataColumnChangeEventArgs) _ Handles Me.ColumnChanging If (e.Column.ColumnName = Me.QuantityColumn.ColumnName) Then If CType(e.ProposedValue, Short) <= 0 Then e.Row.SetColumnError(e.Column, "Quantity must be greater than 0") Else e.Row.SetColumnError(e.Column, "") End If End If End Sub // C# // Add this code to the DataTable // partial class. public override void EndInit() { base.EndInit(); ColumnChanging += SampleColumnChangingEvent; } public void SampleColumnChangingEvent(object sender, System.Data.DataColumnChangeEventArgs e) { if (e.Column.ColumnName == QuantityColumn.ColumnName) { if ((short)e.ProposedValue <= 0) { e.Row.SetColumnError("Quantity", "Quantity must be greater than 0"); } else { e.Row.SetColumnError("Quantity", ""); } } }
See Also
Tasks
Walkthrough: Displaying Data on a Windows Form
How to: Validate Data in the Windows Forms DataGridView Control
How to: Display Error Icons for Form Validation with the Windows Forms ErrorProvider Component
How to: Connect to Data in a Database