找回密码
 立即注册

QQ登录

只需一步,快速开始

iceman

社区贡献组

270

主题

1万

帖子

1万

积分

社区贡献组

积分
19311

活字格认证微信认证勋章元老葡萄

iceman
社区贡献组   /  发表于:2012-6-25 09:54  /   查看:5686  /  回复:0
论坛中有很多用户提问关于如何实现前台校验的问题。使用 Spread RegExpCellType 单元格类型可以非常方便的实现前台数据校验。但是,用户使用 Case 是多种多种多样的,有时使用现有的 Case 无法实现某些格式的校验功能。

例如:校验单元格不能为空,如果为空则弹出错误提示,该单元格一直处于编辑状态直到输入格式正确为止。

面对这种情况,我们就需要通过自定义单元格类型类实现数据校验,下面我们分别讲解:
1.继承 RegExpCellType 创建自定义单元格类型:
  1. public class CustomCellType : FarPoint.Web.Spread.RegExpCellType
复制代码

2.重载 ValidateEditorValue 方法,定制验证正则。
  1. public override string ValidateEditorValue(object value)
  2.         {
  3.             string errorMessage = null;

  4.             System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex("\\s");
  5.             if (reg.IsMatch(value.ToString()))
  6.             {
  7.                 errorMessage = "单元格不能为空";
  8.             }

  9.             return errorMessage;
  10.         }
复制代码

3.重载 EditorClientScriptUrl 方法,链接自定义单元格类型的 js 脚本文件:
  1. public override string EditorClientScriptUrl
  2.         {
  3.             get
  4.             {
  5.                 return "MyCellType.htc";
  6.             }
  7.         }
复制代码


4.创建 .htc 格式的 js 脚本文件,并填写校验规则:
  1. <PUBLIC:COMPONENT>
  2.   <PUBLIC:METHOD NAME="isValid">
  3.   </PUBLIC:METHOD>
  4. </PUBLIC:COMPONENT>

  5. <SCRIPT language="javascript">
  6.     function isValid(val) {
  7.         //替换空格为''
  8.         var result = val.replace(/\s*/g, '');  
  9.         if (result == "") {
  10.             return "单元格不能为空";
  11.         }
  12.         else {
  13.             return "";
  14.         }
  15.     }
  16. </SCRIPT>
复制代码


展示效果:只要被指定单元格类型为 CustomCellType 的单元格进入编辑状态,内容为空时(包括null 和 "    " 情况),就会弹出提示:
1.png

Demo 下载:VS2010 &amp;&amp; Spread for .NET 6 SP3

4959.zip (19.38 KB, 下载次数: 614)

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部