In many cases, edit masks alone are not enough to ensure that the data enters by the user was valid. For example, a mask won't let you specify a range of possible values, or validate the current cell based on the contents of another cell.
In these cases, trap the ValidateEdit event and see if the value contained in the Editor.Text property is a valid entry for the current cell (at this point, the cell still has the original value in it). If the input is invalid, set the Cancel parameter to True and the grid will remain in edit mode until the user types a valid entry.
For example, the code below validates input into a currency column to ensure that values entered are between 1,000 and 10,000:
To write code in Visual Basic
Visual Basic |
Copy Code
|
---|---|
Private Sub _flex_ValidateEdit(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.ValidateEditEventArgs) Handles _flex.ValidateEdit ' Validate amounts. If _flex.Cols(e.Col).DataType Is GetType(Decimal) Then Try Dim dec As Decimal = Decimal.Parse(_flex.Editor.Text()) If (dec < 1000) Or (dec > 10000) Then MessageBox.Show("Value must be between 1,000 and 10,000") e.Cancel = True End If Catch MessageBox.Show("Value not recognized as a Currency") e.Cancel = True End Try End If End Sub |
To write code in C#
C# |
Copy Code
|
---|---|
private void _flex_ValidateEdit( object sender, ValidateEditEventArgs e) { // Validate amounts. if (_flex.Cols[e.Col].DataType == typeof(Decimal)) { try { Decimal dec = Decimal.Parse(_flex.Editor.Text); if ( dec < 1000 || dec > 10000 ) { MessageBox.Show("Value must be between 1,000 and 10,000"); e.Cancel = true; } } catch { MessageBox.Show("Value not recognized as a Currency"); e.Cancel = true; } } } |