开发扩展的文本框控件

来源:互联网 发布:程控电话交换机编程 编辑:程序博客网 时间:2024/05/15 08:46

带正则表达式的文本框控件:

JS代码:

function checkNoZeroInteger(textbox, valType) {    if (valType == "正整数") {        var reg = /^\+?[1-9][0-9]*$/; //验证非零整数的正则表达式        if (!reg.exec(textbox.value)) {//验证不通过            alert("不是正确非零正整数!"); //输出提示            textbox.value = ""; //清空输入框        }    }    else if (valType == "大写字母") {        var reg = /^[A-Z]+$/; //验证大写字母的正则表达式        if (!reg.exec(textbox.value)) {//验证不通过            alert("只能是大写字母!"); //输出提示            textbox.value = ""; //清空输入框        }    }    else if (valType == "小写字母") {        var reg = /^[a-z]+$/; //验证大写字母的正则表达式        if (!reg.exec(textbox.value)) {//验证不通过            alert("只能是小写字母!"); //输出提示            textbox.value = ""; //清空输入框        }    }}

将JS文件的生成操作属性改成嵌入的资源




C#代码:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Text;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;[assembly: WebResource("CustomerTextControl.js.Validate.js", "text/javascript")]namespace CustomerTextControl{    [DefaultProperty("Text")]    [ToolboxData("<{0}:TextBoxs runat=server></{0}:TextBoxs>")]    public class TextBoxs:TextBox    {        [Bindable(true)]        [Category("Appearance")]        [DefaultValue("")]        [Localizable(true)]        [Description("带正则表达式的Text文本框")]        public string Text        {            get            {                String s = (String)ViewState["Text"];                return ((s == null) ? "[" + this.ID + "]" : s);            }            set            {                ViewState["Text"] = value;            }        }        private ValidateType _vt;        /// <summary>        /// 类型属性        /// </summary>        public ValidateType Vt        {            get { return _vt; }            set { _vt = value; }        }        /// <summary>        /// 类型        /// </summary>        public enum ValidateType        {            正整数=1, 大写字母=2, 小写字母=3        }        protected override void OnPreRender(EventArgs e)        {            base.OnPreRender(e);//保留父类的方法功能            Page.ClientScript.RegisterClientScriptResource(this.GetType(), "CustomerTextControl.js.Validate.js");        }        protected override void Render(HtmlTextWriter writer)        {            base.Render(writer);//输出文本框            if (this.Vt==ValidateType.正整数)            {                writer.Write("元");            }            else if(this.Vt==ValidateType.大写字母)            {                writer.Write("大写");                   }            else if (this.Vt == ValidateType.小写字母)            {                writer.Write("小写");            }        }        protected override void AddAttributesToRender(HtmlTextWriter writer)        {            base.AddAttributesToRender(writer);//保留父类的属性            if (this.Vt==ValidateType.正整数||this.Vt==ValidateType.小写字母||this.Vt==ValidateType.大写字母)            {                //添加属性                writer.AddAttribute(HtmlTextWriterAttribute.Onchange, "checkNoZeroInteger(this,'"+this.Vt+"')");            }        }    }}

定义元数据文件写法:

JS文件:

[assembly: WebResource("CustomerTextControl.js.Validate.js", "text/javascript")]

图片文件:

[assembly: WebResource("CustomerTextControl.image.button.jpg","img/gif")]

CSS文件:

[assembly: WebResource("CustomerTextControl.css.Stylesheet.css","text/css")]



ASP代码:

<body>    <form id="form1" runat="server">        <div>            <cc1:TextBoxs ID="TextBoxs1" runat="server" Vt="正整数" onchange="checkNoZeroInteger(this,'正整数')"></cc1:TextBoxs>            <cc1:TextBoxs ID="TextBoxs2" runat="server" Vt="大写字母"  onchange="checkNoZeroInteger(this,'大写字母')"></cc1:TextBoxs>            <cc1:TextBoxs ID="TextBoxs3" runat="server" Vt="小写字母"  onchange="checkNoZeroInteger(this,'小写字母')"></cc1:TextBoxs>        </div>    </form></body>



使用时拖到页面即可。。。

原创粉丝点击