Dev GridControl 单元格输入数据的验证方法

简介: 今天要做一个dev gridcongtrol输入单元格内容有效性的检测,此处以不允许为空、该列的值不允许重复为例。(当然也可以使用别的方式,但别的方式不好实现:当该单元格值不满足条件时,锁定整个gridview,除该单元格之外的位置都不允许输入,即将焦点锁定在这一个单元格)。1、首先将要验证的列设置为RepositoryItemTextEdit类型,或者别的控件类型(其余控件类型未测试),以

今天要做一个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事件中进行处理


相关文章
|
7月前
|
存储
编辑怎么去获取表格单个的值
编辑怎么去获取表格单个的值
|
5月前
el-input实现后缀图标和clearable的兼容,调整el-input clearable与自定义图标展示位置问题
el-input实现后缀图标和clearable的兼容,调整el-input clearable与自定义图标展示位置问题
281 1
Axure RP 9查找属性栏位置简单步骤(以文本框举例)
Axure RP 9查找属性栏位置简单步骤(以文本框举例)
2265 0
Axure RP 9查找属性栏位置简单步骤(以文本框举例)
|
前端开发 JavaScript
前端:JS实现双击table单元格变为可编辑状态
前端:JS实现双击table单元格变为可编辑状态
438 0
|
数据处理
编辑表格输入内容、根据input输入框输入数字动态生成表格行数、编辑表格内容提交传给后台数据处理
编辑表格输入内容、根据input输入框输入数字动态生成表格行数、编辑表格内容提交传给后台数据处理 记录自己学习做的东西,写的小demo,希望对大家也有帮助!
313 0
|
数据库
WinForm中DataGridView验证单元格输入的是数字
转载:http://www.cnblogs.com/ganqiyin/archive/2013/02/18/2915491.html 事件:DataGridView验证单元格输入的是数字,DataGridView源数据是从数据库读取的。
1063 0
Dev GridControl 单元格输入数据的验证方法
作者:jiankunking 出处:http://blog.csdn.net/jiankunking 今天要做一个dev gridcongtrol输入单元格内容有效性的检测,此处以不允许为空、该列的值不允许重复为例。(当然也可以使用别的方式,但别的方式不好实现:当该单元格值不满足条件时,锁定整个gridview,除该单元格之外的位置都不允许输入,即将焦点锁定在这一个单元格)。 1、首先将要验证
2042 0