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();
}