论坛中有很多用户提问关于如何实现前台校验的问题。使用 Spread RegExpCellType 单元格类型可以非常方便的实现前台数据校验。但是,用户使用 Case 是多种多种多样的,有时使用现有的 Case 无法实现某些格式的校验功能。
例如:校验单元格不能为空,如果为空则弹出错误提示,该单元格一直处于编辑状态直到输入格式正确为止。
面对这种情况,我们就需要通过自定义单元格类型类实现数据校验,下面我们分别讲解:
1.继承 RegExpCellType 创建自定义单元格类型:
- public class CustomCellType : FarPoint.Web.Spread.RegExpCellType
复制代码
2.重载 ValidateEditorValue 方法,定制验证正则。
- public override string ValidateEditorValue(object value)
- {
- string errorMessage = null;
- System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex("\\s");
- if (reg.IsMatch(value.ToString()))
- {
- errorMessage = "单元格不能为空";
- }
- return errorMessage;
- }
复制代码
3.重载 EditorClientScriptUrl 方法,链接自定义单元格类型的 js 脚本文件:
- public override string EditorClientScriptUrl
- {
- get
- {
- return "MyCellType.htc";
- }
- }
复制代码
4.创建 .htc 格式的 js 脚本文件,并填写校验规则:
- <PUBLIC:COMPONENT>
- <PUBLIC:METHOD NAME="isValid">
- </PUBLIC:METHOD>
- </PUBLIC:COMPONENT>
- <SCRIPT language="javascript">
- function isValid(val) {
- //替换空格为''
- var result = val.replace(/\s*/g, '');
- if (result == "") {
- return "单元格不能为空";
- }
- else {
- return "";
- }
- }
- </SCRIPT>
复制代码
展示效果:只要被指定单元格类型为 CustomCellType 的单元格进入编辑状态,内容为空时(包括null 和 " " 情况),就会弹出提示:
Demo 下载:VS2010 && Spread for .NET 6 SP3
4959.zip
(19.38 KB, 下载次数: 630)
|
|