x_g 发表于 2015-8-11 20:12:00

请教关于MultiRow TextBoxCell的Validator的使用

想做一个文本长度的检证 例如 如果传入的数据长度大于3位 则弹出错误信息
现在给TextBoxCell的Validator添加了textlengthvalidator 并且actions设定了 messageboxnotify
但是没有达到我想要的效果
因此我想知道是不是这边使用方法有误 而没有达到想要的效果
所以想请教一下关于validator的使用 是否有可参照的文档例子?

dafo 发表于 2015-8-12 09:10:00

默认的MessageBoxNotify验证是在Cell离开编辑状态的时候,如果想在编辑进行中进行验证你需要改变MessageBoxNotify.DoActionReason为EditedFormattedValueChanged。

x_g 发表于 2015-8-12 10:40:00

回复 2楼dafo的帖子

如果是 在用 setvalue给单元格赋值的时候做验证 应该怎么写呢

x_g 发表于 2015-8-12 12:59:00

顶顶 求大神们回复

dafo 发表于 2015-8-12 13:38:00

如果你是通过代码设置改变值,你需要在设置后调用ValidateCell或ValidateRow去强行触发验证逻辑。
代码如下:
            this.gcMultiRow1.SetValue(0, 1, "aaaa");
            this.gcMultiRow1.ValidateCell(0, 1, true);

x_g 发表于 2015-8-12 14:38:00

回复 5楼dafo的帖子

用了您的方法 现在可以正常验证了 非常感谢

验证后设置valueprocess 的 valueprocessoption 为restore 但是验证后 画面上单元格里还是保留了错误的值 请问如果想实现restore上次的数值 该添加哪些代码 ?

Alice 发表于 2015-8-12 16:07:00

回复 1楼x_g的帖子

你好。
MultiRow中文文档地址:
http://www.gcpowertools.com.cn/downloads/PDF/MultiRowWin6.chm
DoActionReason类型可以选择。

dafo 发表于 2015-8-12 17:01:00

如果你是通过代码改变Cell的值,是没有办法触发valueprocess的restore功能的,只能你自己缓存设置之前的值,发现验证不通过后自己再把缓存的值设回去。
实例代码:

            object oldValue = this.gcMultiRow1.GetValue(0, 1);
            this.gcMultiRow1.SetValue(0, 1, "aaaa");
            if (!this.gcMultiRow1.ValidateCell(0, 1, true))
            {
                this.gcMultiRow1.SetValue(0, 1, oldValue);
            }

x_g 发表于 2015-8-13 11:58:00

回复 8楼dafo的帖子

很可惜 没法触发valueprocess
只能用这种方法了

非常感谢

dafo 发表于 2015-8-13 13:37:00

没法触发valueprocess的原因是因为用户通过了自己的业务逻辑控制value的改变,对于GcMutiRow来说它无法分辨这个值变化的原因,也就无法区分什么是你想回滚的旧值,期望你能够理解。
页: [1] 2
查看完整版本: 请教关于MultiRow TextBoxCell的Validator的使用