GridControl 使用技巧2——验证单元格输入值
方法①:使用 ValidatingEditor 事件(一般用于对整个GridView内的文本框进行数据验证)
当单元格输入格式错误时,直接在该行下方提示,代码如下:
using System.Text.RegularExpressions; //注意添加引用 private void gridView1_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e) { if (gridView1.FocusedColumn == colcount) //设置校验列 { bool result = false; Regex regex = new Regex(@"^\+?\d+$"); result = regex.IsMatch(e.Value.ToString()); if (!result) { e.ErrorText = "请输入一个正整数"; e.Valid = false; return; } } }
效果如下:
方法②:使用 ValidatingEditor 事件进行验证,InvalidValueException 事件进行错误信息提示(一般用于对整个GridView内的文本框进行数据验证)
当单元格输入格式错误时,弹出消息看提示,代码如下:
using DevExpress.XtraEditors.Controls; //注意添加引用 private void gridView1_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e) { DataRow dr = gridView1.GetFocusedDataRow(); if (gridView1.FocusedColumn == colcount) { bool result = false; Regex regex = new Regex(@"^\+?\d+$"); result = regex.IsMatch(e.Value.ToString()); if (!result) { e.Valid = false; } } } private void gridView1_InvalidValueException(object sender, DevExpress.XtraEditors.Controls.InvalidValueExceptionEventArgs e) { e.ExceptionMode = ExceptionMode.DisplayError; e.WindowCaption = "输入错误"; e.ErrorText = "请输入一个正整数"; gridView1.HideEditor(); }
效果如下:
方法③:使用 RepositoryItemTextEdit 的 Validating 事件进行验证,InvalidValueException 事件进行错误信息提示(一般用来对内置控件的单元格进行数据验证)
当单元格输入格式错误时,弹出消息看提示,代码如下:
private void repositoryItemTextEdit1_Validating(object sender, CancelEventArgs e) { //将sender转换为BaseEdit类型,使用EditValue来获取当前输入的值并进行校验 BaseEdit textEdit = sender as BaseEdit; if (textEdit.EditValue.ToString().Trim().Length > 0) { bool result = false; Regex regex = new Regex(@"^\+?\d+$"); result = regex.IsMatch(textEdit.EditValue.ToString()); if (!result) { e.Cancel = true; //校验不通过 return; } } } private void gridView1_InvalidValueException(object sender, DevExpress.XtraEditors.Controls.InvalidValueExceptionEventArgs e) { e.ExceptionMode = ExceptionMode.DisplayError; e.WindowCaption = "输入错误"; e.ErrorText = "请输入一个正整数"; gridView1.HideEditor(); }
效果如下: