TEXTBOX重写

 public  interface IDataSet
    {
        /// <summary>
        /// 与数据库数据项相关联的数据
        /// </summary>
        string LinkProperty
        {
            get;
            set;
        }

        /// <summary>
        /// 与数据关联的表名
        /// </summary>
        string LinkObject
        {
            get;
            set;
        }

 

 

 public enum DataType
        {
            Never,     //不验证

            String,     //字符串

            Int,     //整数

            IntPostive,    //大于0的整数

            IntZeroPostive,   //大于等于0的整数

            Float,     //数字

            FloatPostive,   //大于0的数字

            FloatZeroPostive,  //大于等于0的数字

            Url,
            Mail,
         

            EnglishChars,   //英文

            EngNum,     //英文和数字

            EngNumUnerline,   //英文、数字和下划线

            PhoneNumber,   //电话号码

            MobileNumber,   //手机号码

            PostalCode,    //邮政编码

            Custom
        }
    public class DATA_TextBox : System.Web.UI.WebControls.TextBox, IDataSet
    {
        private string error = "";

        private System.Web.UI.WebControls.Label lbl = new Label();
        private System.Web.UI.WebControls.RequiredFieldValidator rfvDataInput = new RequiredFieldValidator();
        private System.Web.UI.WebControls.RegularExpressionValidator revDataInput = new RegularExpressionValidator();
        private Panel pnlFrame = new Panel();
   
        [DefaultValue("IntPostive")]
        public DataType ValidType
        {
            get { return ViewState["ValidType"] == null ? DataType.Never : (DataType)ViewState["ValidType"]; }
            set { ViewState["ValidType"] = value; }
        }

     
        public string ValidError
        {
            get { return ViewState["ValidError"] == null ? "" : (string)ViewState["ValidError"]; }
            set { ViewState["ValidError"] = value; }
        }

     
        public string ValidExpressionCustom
        {
            get { return ViewState["ValidExpressionCustom"] == null ? "" : (string)ViewState["ValidExpressionCustom"]; }
            set { ViewState["ValidExpressionCustom"] = value; }
        }

      
        public string CssError
        {
            get { return ViewState["CssError"] == null ? "" : (string)ViewState["CssError"]; }
            set { ViewState["CssError"] = value; }
        }
     
        [DefaultValue("true")]
        public bool AllowEmpty
        {
            get { return ViewState["AllowEmpty"] == null ? true : (bool)ViewState["AllowEmpty"]; }
            set { ViewState["AllowEmpty"] = value; }
        }
        public string CssLabel
        {
            get { return ViewState["CssLabel"] == null ? "" : (string)ViewState["CssLabel"]; }
            set { ViewState["CssLabel"] = value; }
        }
        public string Language
        {
            get;
            set;
        }
        public string LanguageType
        {
            get;
            set;
        }
        public string LanguageCss
        {
            get;
            set;
        }
      
        /// <summary>
        /// 与数据库数据项相关联的数据
        /// </summary>
        public string LinkProperty
        {
            get;
            set;
        }

        /// <summary>
        /// 与数据关联的表名
        /// </summary>
        public string LinkObject
        {
            get;
            set;
        }

        /// <summary>
        /// 数据类型
        /// </summary>
        public TypeCode SysTypeCode
        {
            get;
            set;
        }

        /// <summary>
        /// 是否是主键
        /// </summary>
        public bool PrimaryKey
        {
            get;
            set;
        }

        public void SetValue(object value)
        {
            this.Text = value.ToString();
        }
        public String GetID()
        {
            return this.ID.ToString();
        }
        /// <summary>
        /// 获取值
        /// </summary>
        /// <returns></returns>
        public object GetValue()
        {
            return this.Text;
        }

        /// <summary>
        /// 服务端验证
        /// </summary>
        /// <returns></returns>
        public bool Validate()
        {
            return true;
        }
        private string GetValidRegex()
        {
            string regex = @"(\S)";
            switch (this.ValidType)
            {
                case DataType.Never:
                    break;
                case DataType.Int:
                    error = "*必须为整数";
                    regex = @"(-)?(\d+)";
                    break;
                case DataType.IntPostive:
                    error = "*必须为大于0的整数";
                    regex = @"([1-9]{1}\d*)";
                    break;
                case DataType.IntZeroPostive:
                    error = "*必须为不小于0的整数";
                    regex = @"(\d+)";
                    break;
                case DataType.Float:
                    error = "*必须为数字";
                    regex = @"(-)?(\d+)(((\.)(\d)+))?";
                    break;
                case DataType.FloatPostive:
                    error = "*必须为大于0的数字";
                    regex = @"(\d+)(((\.)(\d)+))?";
                    break;
                case DataType.FloatZeroPostive:
                    error = "*必须为不小于0的数字";
                    regex = @"(\d+)(((\.)(\d)+))?";
                    break;
                case DataType.Url:
                    error = "*URL格式错误";
                    regex = @"(http://)?([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?";

                    break;
                case DataType.Mail:
                    error = "*EMail格式错误";
                    regex = @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
                    break;
                case DataType.EnglishChars:
                    error = "*只能输入英文字符";
                    regex = @"[a-zA-Z]*";
                    break;
                case DataType.EngNum:
                    error = "*只能输入英文字符和数字";
                    regex = @"[a-zA-Z0-9]*";
                    break;
                case DataType.EngNumUnerline:
                    error = "*只能输入英文字符、数字和下划线";
                    regex = @"[a-zA-Z0-9_]*";
                    break;
                case DataType.PhoneNumber:
                    error = "*电话号码格式错误";
                    regex = @"(86)?(-)?(0\d{2,3})?(-)?(\d{7,8})(-)?(\d{1,5})?";
                    break;
                case DataType.MobileNumber:
                    error = "*手机号码格式错误";
                    regex = @"(0)?(13)\d{9}";
                    break;
                case DataType.PostalCode:
                    error = "*邮编格式错误";
                    regex = @"\d{6}";
                    break;
                case DataType.Custom:
                    error = "*格式错误";
                    regex = this.ValidExpressionCustom;
                    break;
                default:
                    break;
            }
            if (this.ValidError.Trim() != "")
                error = this.ValidError;
            return regex;
        }

        protected override void EnsureChildControls()
        {
            this.rfvDataInput.CssClass = this.CssError;
            this.rfvDataInput.ErrorMessage = "*输入不能为空";
            this.rfvDataInput.Display = System.Web.UI.WebControls.ValidatorDisplay.Dynamic;
            this.rfvDataInput.EnableViewState = true;
            this.rfvDataInput.ControlToValidate = base.ID;

            this.revDataInput.CssClass = this.CssError;
            this.revDataInput.ErrorMessage = "*输入格式错误";
            this.revDataInput.Display = System.Web.UI.WebControls.ValidatorDisplay.Dynamic;
            this.revDataInput.EnableViewState = true;
            this.revDataInput.ControlToValidate = base.ID;

            //将子控件添加到此自定义控件中
            //this.lbl.Text = "请输入数值:";
          
            this.Controls.Add(rfvDataInput);
            this.Controls.Add(revDataInput);
            this.Controls.Add(pnlFrame);
            //this.Controls.Add(lbl);
        }
        protected override void Render(HtmlTextWriter output)
        {
            String Str = "";
            Str = this.Language;
            String ULCSS = "";
            ULCSS = this.LanguageCss;
            String ULLI = "";
            ULLI = ULCSS + "LI";
            output.Write("<UL class=\"" + ULCSS + "\"><LI>");
                output.Write(Str);
                output.Write("</LI><LI>");
                base.Render(output);
           
            if (!this.AllowEmpty)
            {
                this.rfvDataInput.ID = "rfv" + base.ID;
                this.rfvDataInput.ControlToValidate = base.ID;
                this.rfvDataInput.RenderControl(output);
            }

            if (this.ValidType != DataType.Never && this.ValidType != DataType.String)
            {
                this.revDataInput.ID = "rev" + base.ID;
                this.revDataInput.ControlToValidate = base.ID;
                this.revDataInput.ValidationExpression = this.GetValidRegex();
                this.revDataInput.ErrorMessage = error;
                this.revDataInput.RenderControl(output);
            }
            output.Write("</LI></UL>");

        }

    }

 public class Data_Label :System.Web.UI.WebControls.TextBox, IDataSet
    {

        /// <summary>
        /// 与数据库数据项相关联的数据
        /// </summary>
        public string LinkProperty
        {
            get;
            set;
        }

        /// <summary>
        /// 与数据关联的表名
        /// </summary>
        public string LinkObject
        {
            get;
            set;
        }

 

 

        /// <summary>
        /// 数据类型
        /// </summary>
        public TypeCode SysTypeCode
        {
            get;
            set;
        }

 

 

        /// <summary>
        /// 是否是主键
        /// </summary>
        public bool PrimaryKey
        {
            get;
            set;
        }

        public void SetValue(object value)
        {
            this.Text = value.ToString();
        }

        /// <summary>
        /// 获取值
        /// </summary>
        /// <returns></returns>
        public object GetValue()
        {
            return this.Text;
        }

        /// <summary>
        /// 服务端验证
        /// </summary>
        /// <returns></returns>
        public bool Validate()
        {
            return true;
        }
        public String GetID()
        {
            return this.ID.ToString();
        }

    }

        /// <summary>
        /// 数据类型
        /// </summary>
        TypeCode SysTypeCode
        {
            get;
            set;
        }

 


        /// <summary>
        /// 是否是主键
        /// </summary>
        bool PrimaryKey
        {
            get;
            set;
        }

 

        /// <summary>
        /// 设置值
        /// </summary>
        /// <param name="obj"></param>
        void SetValue(object value);

        /// <summary>
        /// 获取值
        /// </summary>
        /// <returns></returns>
        object GetValue();

        /// <summary>
        /// 服务端验证
        /// </summary>
        /// <returns></returns>
        bool Validate();

        String GetID();

    }

posted @ 2013-06-05 16:18  greefsong  阅读(181)  评论(0编辑  收藏  举报