在使用Spread for Asp.NET 5.0 时,我们经常会遇到这样的Case,既要对客户端输入的数据进行有效性验证,又要对原有数据进行格式化显示。
我们可以使用RegExpCellType类型来完成客户端的数据有效性验证;使用DoubleCellType类型来设置我们需要的数据显示样式,可是,我们不能兼得二者的优点。这样我们就不得不扩展CellType来实现这一需求。
下面通过扩展DoubleCellType类来讲解如何创建多功能的自定义CellType类型:
第一步:创建自定义的CellType类型 MyDoubleCellType- [Serializable()]
- public class MyDoubleCellType : DoubleCellType
- {
- public override string ValidateEditorValue(object val)
- {
- string reason = null;
- if (val != null && val.ToString().Length > 0)
- {
- System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"^-?(0\.\d{2}|[1-9]\d*\.\d{2})$");
- if (!reg.IsMatch(val.ToString()))
- {
- reason = "请输入规范数据!(例:12.34)";
- }
- }
- return reason;
- }
- public override string EditorClientScriptUrl
- {
- get
- {
- //指定我们自己的数据验证脚本
- return "MyDoubleEditor.htc";
- }
- }
- }
复制代码 第二步:创建自己的数据验证逻辑 MyDoubleEditor.htc- <PUBLIC:COMPONENT>
- <PUBLIC:METHOD NAME="isValid">
- </PUBLIC:METHOD>
- </PUBLIC:COMPONENT>
- <SCRIPT language="javascript">
- function isValid(val) {
- if (val != null) {
- var patt1 = new RegExp("^-?(0\\.\\d{2}|[1-9]\\d*\\.\\d{2})$");
- var result = patt1.test(val);
- if (!result) {
- return "请输入规范数据!(例:12.34)";
- }
- }
- return "";
- }
- </SCRIPT>
复制代码 第三步:使用MyDoubleCellType- protected void Page_Load(object sender, EventArgs e)
- {
- //设置第一列的Cell为用户自定义的MyDoubleCellType类型
- MyDoubleCellType myDct = new MyDoubleCellType();
- myDct.DecimalDigits = 2;
- myDct.FixedPoint = true;
- FpSpread1.Columns[0].CellType = myDct;
- }
复制代码 开发环境:VS2010 + Srpead for Asp.NET V5.0.3524.2008
源码下载:
Spread_Web_Demo_6.zip
(9.98 KB, 下载次数: 1651)
|
|