自定义服务器控件开发之4:重写的支持多验证TextBox控件 续1
去年写了这个东东,发现还是挺好用的,哈哈!不过感觉功能不太满意,于是有增加了些新的功能。
1、增加了输入提示、自定义错误提示、自定义不能为空的提示;
2、增加输入框处于焦点时的样式变化;
3、增加了可自增加行数和减少行数功能;
4、增加了下拉框模式,下拉框可进行数据源的绑定;
去年写了这个东东,发现还是挺好用的,哈哈!不过感觉功能不太满意,于是有增加了些新的功能。
1、增加了输入提示、自定义错误提示、自定义不能为空的提示;
2、增加输入框处于焦点时的样式变化;
3、增加了可自增加行数和减少行数功能;
4、增加了下拉框模式,下拉框可进行数据源的绑定;
![](https://www.cnblogs.com/images/cnblogs_com/nowind/Snap1.jpg)
![](https://www.cnblogs.com/images/cnblogs_com/nowind/Snap2.jpg)
由于字符数过多,不能完全粘贴,需要的朋友请下载附件。
https://files.cnblogs.com/nowind/WebTextBox.rar
增加部分源代码如下:
1、增加了输入提示、自定义错误提示、自定义不能为空的提示;
2、增加输入框处于焦点时的样式变化;
3、增加了可自增加行数和减少行数功能;
4、增加了下拉框模式,下拉框可进行数据源的绑定;
![](https://www.cnblogs.com/images/cnblogs_com/nowind/Snap1.jpg)
![](https://www.cnblogs.com/images/cnblogs_com/nowind/Snap2.jpg)
由于字符数过多,不能完全粘贴,需要的朋友请下载附件。
https://files.cnblogs.com/nowind/WebTextBox.rar
增加部分源代码如下:
1
//可调整高度
2
if (this.IsRegulateHeight)
3![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
4![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
#region
5
StringBuilder sbscript = new StringBuilder();
6
sbscript.Append("\n<!--调节输入框高度 begin-->\n");
7
sbscript.Append(" <script type=\"text/javascript\">\n");
8
sbscript.Append(" //Plus\n");
9
sbscript.Append(" function PlusHeight(id)\n");
10
sbscript.Append(" {\n");
11
sbscript.Append(" var txtInput = document.getElementById(id);\n");
12
sbscript.Append(" txtInput.rows = parseInt(txtInput.rows) + " + this.RegulateRows + ";\n");
13
//sbscript.Append(" txtInput.style.height = txtInput.style.height+15;\n");
14
sbscript.Append(" }\n");
15
sbscript.Append(" //Minus\n");
16
sbscript.Append(" function MinusHeight(id)\n");
17
sbscript.Append(" {\n");
18
sbscript.Append(" var txtInput = document.getElementById(id);\n");
19
sbscript.Append(" if( parseInt(txtInput.rows) >= " + (this.RegulateRows + 1) + " )\n");
20
sbscript.Append(" txtInput.rows = parseInt(txtInput.rows) - " + this.RegulateRows + ";\n");
21
sbscript.Append(" }\n");
22
sbscript.Append(" </script>\n");
23
sbscript.Append("<!--调节输入框高度 end-->\n");
24![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
System.Web.UI.ClientScriptManager client = this.Page.ClientScript;
26
Type cstype = Page.GetType();
27
if (!client.IsStartupScriptRegistered(cstype, "regulateheight"))
28
client.RegisterStartupScript(cstype, "regulateheight", sbscript.ToString());
29![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
StringBuilder sbhtml = new StringBuilder();
31
sbhtml.Append("<div style=\"height:24px;\">");
32
sbhtml.Append(" " + this.ImageIconMinus + " " + this.ImageIconPlus);
33
sbhtml.Append("</div>");
34
output.Write(sbhtml.ToString());
35
#endregion
36
}
37
//下拉框模式
38
if (this.HasDropDownList)
39![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
40![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
#region
41
//已经改为点击输入框的时候激发客户端事件
42
//output.Write("<img id=\"" + this.ClientID + "Icon\" src=\"" + this.ImageIconShowDropDown + "\" border=\"0\" style=\"cursor:hand;\" onclick=\"ShowList('" + this.ClientID + "');\" align=\"absmiddle\" />\n");
43
int width = Convert.ToInt32(base.Width.Value);
44
width = width == 0 ? 100 : width;
45
output.AddAttribute(System.Web.UI.HtmlTextWriterAttribute.Style, "display:none;position:absolute;");
46
output.AddAttribute(System.Web.UI.HtmlTextWriterAttribute.Id, this.ClientID + "List");
47
output.RenderBeginTag(HtmlTextWriterTag.Div);
48
output.AddAttribute(System.Web.UI.HtmlTextWriterAttribute.Style, "margin-left:" + width + "px;");
49
output.RenderBeginTag(HtmlTextWriterTag.Span);
50![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
drpList.ID = base.ID+"Items";
52
drpList.Style.Add("margin-left", "-" + width + "px");
53
drpList.Attributes.Add("onchange", "document.getElementById('" + this.ClientID + "').value=this.options[this.selectedIndex].text;document.getElementById('" + this.ClientID + "List').style.display='none';");
54
//drpList.Attributes.Add("onblur", "this.style.display='none'");
55
if (this.DropDownListDataSource !=null && this.DropDownListDataSource.Rows.Count > 0)
56![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
57
drpList.DataTextField = this.DataTextField;
58
drpList.DataValueField = this.DataValueField;
59
drpList.DataSource = this.DropDownListDataSource.DefaultView;
60
drpList.DataBind();
61
}
62
if(HasDefaultItem)
63
drpList.Items.Insert(0,new ListItem(this.DefaultItemText,this.DefaultItemValue));
64
foreach (ListItem item in drpList.Items)
65![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
66
if (item.Text == base.Text.Trim())
67![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
68
item.Selected = true;
69
break;
70
}
71
}
72
this.drpList.RenderControl(output);
73
output.RenderEndTag();
74
output.RenderEndTag();
75![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
76
StringBuilder sbscript = new StringBuilder();
77![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
js内容#region js内容
78
sbscript.Append("\n<script type=\"text/javascript\">\n");
79
sbscript.Append(" <!--下拉框显示隐藏 begin-->\n");
80
sbscript.Append(" function ShowList(id)\n");
81
sbscript.Append(" {\n");
82
sbscript.Append(" var txtInput = document.getElementById(id);\n");
83
sbscript.Append(" var drpList = document.getElementById(id+'List');\n");
84
//sbscript.Append(" var drpIcon = document.getElementById(id+'Icon');\n");
85
sbscript.Append(" var drpItems = document.getElementById(id+'Items');\n"); //下拉框
86
sbscript.Append(" if(drpList.style.display == 'block')\n");
87
sbscript.Append(" {\n");
88
sbscript.Append(" txtInput.title = '点击显示下拉框';\n");
89
sbscript.Append(" drpList.style.display = 'none';\n");
90
//sbscript.Append(" drpIcon.src = '" + this.ImageIconShowDropDown + "';\n");
91
sbscript.Append(" }\n");
92
sbscript.Append(" else\n");
93
sbscript.Append(" {\n");
94
sbscript.Append(" txtInput.title = '点击关闭下拉框';\n");
95
sbscript.Append(" drpList.style.display = 'block';\n");
96
sbscript.Append(" drpList.style.left = GetOffsetLeft(txtInput)+'px';\n");
97
sbscript.Append(" drpList.style.top = (GetOffsetTop(txtInput)+1)+'px';\n");
98
sbscript.Append(" drpItems.style.width = txtInput.offsetWidth+'px';\n");
99
//sbscript.Append(" drpIcon.src = '" + this.ImageIconHideDropDown + "';\n");
100
sbscript.Append(" }\n");
101
sbscript.Append(" }\n");
102
sbscript.Append(" <!--下拉框显示隐藏 end-->\n");
103
sbscript.Append(" function GetOffsetTop(e) \n");
104
sbscript.Append(" {\n");
105
sbscript.Append(" var offsetTop = e.offsetTop;\n");
106
sbscript.Append(" var offsetParent = e.offsetParent;\n");
107
sbscript.Append(" while(offsetParent)\n");
108
sbscript.Append(" {\n");
109
sbscript.Append(" offsetTop += offsetParent.offsetTop;\n");
110
sbscript.Append(" offsetParent = offsetParent.offsetParent;\n");
111
sbscript.Append(" }\n");
112
sbscript.Append(" return offsetTop+e.offsetHeight;\n");
113
sbscript.Append(" }\n");
114
sbscript.Append(" function GetOffsetLeft(e) \n");
115
sbscript.Append(" {\n");
116
sbscript.Append(" var offsetLeft = e.offsetLeft;\n");
117
sbscript.Append(" var offsetParent = e.offsetParent;\n");
118
sbscript.Append(" while(offsetParent) \n");
119
sbscript.Append(" {\n");
120
sbscript.Append(" offsetLeft += offsetParent.offsetLeft;\n");
121
sbscript.Append(" offsetParent = offsetParent.offsetParent;\n");
122
sbscript.Append(" }\n");
123
sbscript.Append(" return offsetLeft;\n");
124
sbscript.Append(" }\n");
125
sbscript.Append("</script>\n");
126
# endregion
127
System.Web.UI.ClientScriptManager client = this.Page.ClientScript;
128
Type cstype = Page.GetType();
129
if (!client.IsStartupScriptRegistered(cstype, "showlist"))
130
client.RegisterStartupScript(cstype, "showlist", sbscript.ToString());
131![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
132
#endregion
133
}
134![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/dot.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/dot.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
54
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
56
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
57
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
58
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
59
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
60
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
62
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
63
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
64
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
65
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
66
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
67
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
68
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
69
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
70
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
71
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
72
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
73
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
74
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
75
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
76
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
77
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
78
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
79
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
80
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
81
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
82
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
83
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
84
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
85
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
86
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
87
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
88
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
89
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
90
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
91
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
92
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
93
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
94
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
95
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
96
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
97
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
98
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
99
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
100
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
101
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
102
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
103
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
104
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
105
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
106
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
107
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
108
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
109
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
110
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
111
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
112
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
113
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
114
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
115
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
116
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
117
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
118
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
119
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
120
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
121
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
122
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
123
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
124
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
125
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
126
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
127
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
128
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
129
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
130
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
131
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
132
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
133
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
134
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)