using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
namespace ZHBase.ZHWebControl
{
[ToolboxData("<{0}:ZHTxtNum runat=\"server\"></{0}:ZHTxtNum>")]
public class ZHTxtNum : TextBox
{
private string _promptMseeage = "";//提示信息
private string _controlID = "";//控件ID
private ZHValidateType _validateType = ZHValidateType.不验证;//验证方式
[Browsable(true)]
[Description("提示信息")]
[DefaultValue("")]
[Category("扩展")]
public string PromptMseeage
{
set { _promptMseeage = value; }
}
[Browsable(true)]
[Description("控件ID")]
[DefaultValue("")]
[Category("扩展")]
public string ControlID
{
set { _controlID = value; }
}
[Browsable(true)]
[Description("验证方式")]
[DefaultValue("")]
[Category("扩展")]
public ZHValidateType ValidateType
{
set { _validateType = value; }
}
public override string Text
{
get
{
return base.Text;
}
set
{
base.Text = value.Trim();
}
}
public ZHTxtNum()
{
}
protected override void OnLoad(EventArgs e)
{
string strPatternName = "";
string strPattern = "";
switch (_validateType)
{
case ZHValidateType.非负整数://非负整数(正整数+0)
strPatternName = "1";
strPattern = @"/^\d+$/";
break;
case ZHValidateType.正整数://正整数
strPatternName = "2";
strPattern = @"/^[0-9]*[1-9][0-9]*$/";
break;
case ZHValidateType.非正整数://非正整数(负整数+0)
strPatternName = "3";
strPattern = @"/^((-\d+)|(0+))$/";
break;
case ZHValidateType.负整数://负整数
strPatternName = "4";
strPattern = @"/^-[0-9]*[1-9][0-9]*$/";
break;
case ZHValidateType.整数://整数
strPatternName = "5";
strPattern = @"/^-?\d+$/";
break;
case ZHValidateType.非负浮点数://非负浮点数(正浮点数+0)
strPatternName = "6";
strPattern = @"/^\d+(\.\d+)?$/";
break;
case ZHValidateType.正浮点数://正浮点数
strPatternName = "7";
strPattern = @"/^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/";
break;
case ZHValidateType.非正浮点数://非正浮点数(负浮点数+0)
strPatternName = "8";
strPattern = @"/^((-\d+(\.\d+)?)|(0+(\.0+)?))$/";
break;
case ZHValidateType.负浮点数://负浮点数
strPatternName = "9";
strPattern = @"/^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/";
break;
case ZHValidateType.浮点数://浮点数
strPatternName = "10";
strPattern = @"/^(-?\d+)(\.\d+)?$/";
break;
case ZHValidateType.Email地址://Email地址
strPatternName = "11";
strPattern = @"/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/";
break;
case ZHValidateType.由26个英文字母组成的字符串://由26个英文字母组成的字符串
strPatternName = "12";
strPattern = @"/^[A-Za-z]+$/";
break;
case ZHValidateType.由26个英文字母的大写组成的字符串://由26个英文字母的大写组成的字符串
strPatternName = "13";
strPattern = @"/^[A-Z]+$/";
break;
case ZHValidateType.由26个英文字母的小写组成的字符串://由26个英文字母的小写组成的字符串
strPatternName = "14";
strPattern = @"/^[a-z]+$/";
break;
case ZHValidateType.由数字和26个英文字母组成的字符串://由数字和26个英文字母组成的字符串
strPatternName = "15";
strPattern = @"/^[A-Za-z0-9]+$/";
break;
case ZHValidateType.由数字或26个英文字母或下划线组成的字符串://由数字或26个英文字母或下划线组成的字符串
strPatternName = "16";
strPattern = @"/^\w+$/";
break;
case ZHValidateType.不验证://不验证
strPatternName = "99";
strPattern = @"";
return;
default:
break;
}
string strJavaScript = @"
<script language='javascript' type='text/javascript'>
function ZHValidate_" + strPatternName + @"(inputString)
{
if (inputString=='')
{
return;
}
var txtControl = document.getElementById('" + this._controlID + @"');
var pattern=" + strPattern + @";
if (!pattern.test(inputString))
{
txtControl.focus();
alert('" + this._promptMseeage + @"');
}
}
</script>";
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "js" + strPatternName, strJavaScript);
this.Attributes.Add("onblur", "ZHValidate_" + strPatternName + "(value);");
base.OnLoad(e);
}
}
}