作者:[jiankunking](http://blog.csdn.net/jiankunking) 出处:http://blog.csdn.net/jiankunking
今天要做一个dev gridcongtrol输入单元格内容有效性的检测,此处以不允许为空、该列的值不允许重复为例。(当然也可以使用别的方式,但别的方式不好实现:当该单元格值不满足条件时,锁定整个gridview,除该单元格之外的位置都不允许输入,即将焦点锁定在这一个单元格)。
1、首先将要验证的列设置为RepositoryItemTextEdit类型,或者别的控件类型(其余控件类型未测试),以下以RepositoryItemTextEdit类型为例
2、找到RepositoryItemTextEdit的Validating事件,具体代码如下:
~~~
<span style="font-size:14px;"> private void TextEdit1_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
BaseEdit textEdit = sender as BaseEdit;
if (textEdit.Text.ToString().Trim().Length == 0)
{
e.Cancel = true;
//标识 错误提示
errorReason = 0;
return;
}
else
{
//获取GridView中所有的选中的行号
//此处不允许多选,故只有一行
int[] iRowId = this.gViewActList.GetSelectedRows();
for (int i = 0; i < gViewActList.DataRowCount; i++)
{
//重复检验时,不验证当前行
if (i != iRowId[0])
{
//textEdit.EditValue 当前编辑的值
//需要注意的是取当前单元格的值要用:textEdit.EditValue
//GridView在TextEdit1_Validating执行时还未将你输入的值更新进去,但执行完该方法后,即使不满足条件,你所输入的值,也会更新到GridView中去
//同时,也说明了,在Validating函数中排除重复值的时候,通过GridView获取当前行的值,不是最新的,即不是你最近一次输入的
if (textEdit.EditValue.ToString().Trim() == gViewActList.GetDataRow(i)["GridView上绑定的列名"].ToString().Trim())
{
e.Cancel = true;
//标识 错误提示
errorReason = 1;
return;
}
}
}
}</span>
~~~
3、根据Validating事件中的标识,进行错误信息提示:
~~~
<span style="font-size:14px;">private void gViewActList_InvalidValueException(object sender, InvalidValueExceptionEventArgs e)
{
if (errorReason == 0)
{
e.ErrorText = "动作名称不允许为空!";
}
else if (errorReason == 1)
{
e.ErrorText = "动作名称不允许为重复!";
}
else
{
e.ErrorText = "值无效!";
}
}</span>
~~~
具体效果如下:

小注:
1、使用RepositoryItem.Validating事件,事件的"sender" 必须转换为BaseEdit类型,使用EditValue来获取当前输入的值并进行校验,如果校验不通过,把e.Cancel设置True。这种方法一般用来对内置控件的单元格进行数据验证。
2、使用 GridView.ValidatingEditor 事件
事件的"sender"必须转换为GridView类型,当前列可以从GridView.FocusedColumn属性获得,值可以从e.Value获取,如果校验不通过,需要把e.Valid设置为False.。这种方法一般用于对整个Grid内的文本框进行数据验证。
具体错误提示信息可以在GridView.InvalidValueException事件中进行处理
- 前言
- DEV Gridcontrol 多选
- 关于同步(字典)功能实现的相关积累
- 怎么将输入框控件中的值添加到DataSet中?
- 怎么获得当前行(gridcontrol中)在数据库中某列的值?
- DEV ComboBoxEdit 控件
- Dev Gridcontrol “互联”界面的实现
- DEV ComboBoxEdit控件
- GridView控件 System.NullReferenceException
- Ds中有数据,但Gridview上未显示的原因小结
- VS2010 dev控件 拖拽不到Winfrom上的原因
- DEV Xtratabcontrol中的Xtratabpage
- 在Gridcontrol上选择某一列,并将其删除
- Dev RadioGroup控件:实现单选效果
- Dev Gridcontrol 设置当前行字体
- 控件repositoryItemTextEdit输入不上
- 在GridControl上显示与表A某字段对应的表B字段
- Dev中的repositoryItemButtonEdit控件,双击没反应
- 隐藏GridControl的“Drag a column header here to group by that column”
- DEV GridView显示行号
- DEV Gridcontrol 查询得到0条记录时显示自定义的字符提示/显示
- DateEdit控件时间格式转换
- Dev BarManager控件要通过Remove成员来释放内存
- Dev 显式注册的EvenHandler要显式注销以避免内存泄漏
- Dev 控件绑定的数据源批量操作应避免自动刷新
- Dev Gridcontrl随便单击,都会调用某个方法的原因
- DEV Gridcontrol 格式化显示数据
- DEV gridview 捕获行双击事件
- Dev gridcontrol 捕获按键事件
- DEV GridControl 导出到Excel
- DevExpress GridControl复合表头(多行表头)设置
- Dev gridcontrol获取选定行,指定列单元格的内容
- Dev GridControl 小结
- DevExpress TreeList控件的复选框
- Dev Treelist控件显示行号
- Dev 获取鼠标所在行的索引值
- DevExpress gridview下拉框repositoryItemComboBox的使用
- DevExpress.XtraEditors.DataNavigator用法
- dev gridcontrol 单选框效果
- dev 根据datatable动态生成gridview
- Dev BarManager用法
- Dev GridView RowCellClick事件与MouseDown事件
- Dev 控件中的combox禁止输入
- 在DevExpress GridControl的一列中显示图片
- Dev GridControl 单元格输入数据的验证方法
- dev treelist 常用用法小结
- DevExpress GridView 添加和设置右键菜单
- Dev GridView 绑定List&lt;T&gt;、BindingList &lt;T&gt;、BindingSource
- Dev RadioGroup 用法(项横排显示、项选中)
- DevExpress XtraTreeList的复选框 禁用
