原創(chuàng)|其它|編輯:郝浩|2011-12-26 23:45:12.000|閱讀 692 次
概述:在使用Spread .NET 時(shí),我們經(jīng)常會(huì)遇到這樣的Case,既要對(duì)客戶端輸入的數(shù)據(jù)進(jìn)行有效性驗(yàn)證,又要對(duì)原有數(shù)據(jù)進(jìn)行格式化顯示,我們可以使用RegExpCellType類型來完成客戶端的數(shù)據(jù)有效性驗(yàn)證。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在使用Spread .NET 時(shí),我們經(jīng)常會(huì)遇到這樣的Case,既要對(duì)客戶端輸入的數(shù)據(jù)進(jìn)行有效性驗(yàn)證,又要對(duì)原有數(shù)據(jù)進(jìn)行格式化顯示。
我們可以使用RegExpCellType類型來完成客戶端的數(shù)據(jù)有效性驗(yàn)證;使用DoubleCellType類型來設(shè)置我們需要的數(shù)據(jù)顯示樣式,可是,我們不能兼得二者的優(yōu)點(diǎn)。這樣我們就不得不擴(kuò)展CellType來實(shí)現(xiàn)這一需求。
下面通過擴(kuò)展DoubleCellType類來講解如何創(chuàng)建多功能的自定義CellType類型:
第一步:創(chuàng)建自定義的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 = "請(qǐng)輸入規(guī)范數(shù)據(jù)!(例:12.34)";
}
}
return reason;
}
public override string EditorClientScriptUrl
{
get
{
//指定我們自己的數(shù)據(jù)驗(yàn)證腳本
return "MyDoubleEditor.htc";
}
}
}
第二步:創(chuàng)建自己的數(shù)據(jù)驗(yàn)證邏輯 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 "請(qǐng)輸入規(guī)范數(shù)據(jù)!(例:12.34)";
}
}
return "";
}
</SCRIPT>
第三步:使用MyDoubleCellType
protected void Page_Load(object sender, EventArgs e)
{
//設(shè)置第一列的Cell為用戶自定義的MyDoubleCellType類型
MyDoubleCellType myDct = new MyDoubleCellType();
myDct.DecimalDigits = 2;
myDct.FixedPoint = true;
FpSpread1.Columns[0].CellType = myDct;
}
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載