自定义服务器控件开发之4:重写的支持多验证TextBox控件 续1

        去年写了这个东东,发现还是挺好用的,哈哈!不过感觉功能不太满意,于是有增加了些新的功能。
        1、增加了输入提示、自定义错误提示、自定义不能为空的提示;
        2、增加输入框处于焦点时的样式变化;
        3、增加了可自增加行数和减少行数功能;
        4、增加了下拉框模式,下拉框可进行数据源的绑定;

Snap1.jpg Snap2.jpg
由于字符数过多,不能完全粘贴,需要的朋友请下载附件。
http://www.cnblogs.com/Files/nowind/WebTextBox.rar
增加部分源代码如下:

  1 None.gif // 可调整高度
  2 None.gif              if  ( this .IsRegulateHeight)
  3 ExpandedBlockStart.gifContractedBlock.gif             dot.gif {
  4ContractedSubBlock.gifExpandedSubBlockStart.gif                dot.gif#region
  5InBlock.gif                StringBuilder sbscript = new StringBuilder();
  6InBlock.gif                sbscript.Append("\n<!--调节输入框高度 begin-->\n");
  7InBlock.gif                sbscript.Append("    <script type=\"text/javascript\">\n");
  8InBlock.gif                sbscript.Append("        //Plus\n");
  9InBlock.gif                sbscript.Append("        function PlusHeight(id)\n");
 10InBlock.gif                sbscript.Append("        {\n");
 11InBlock.gif                sbscript.Append("            var txtInput = document.getElementById(id);\n");
 12InBlock.gif                sbscript.Append("                txtInput.rows = parseInt(txtInput.rows) + " + this.RegulateRows + ";\n");
 13InBlock.gif                //sbscript.Append("            txtInput.style.height = txtInput.style.height+15;\n");
 14InBlock.gif                sbscript.Append("        }\n");
 15InBlock.gif                sbscript.Append("        //Minus\n");
 16InBlock.gif                sbscript.Append("        function MinusHeight(id)\n");
 17InBlock.gif                sbscript.Append("        {\n");
 18InBlock.gif                sbscript.Append("            var txtInput = document.getElementById(id);\n");
 19InBlock.gif                sbscript.Append("            if( parseInt(txtInput.rows) >= " + (this.RegulateRows + 1+ " )\n");
 20InBlock.gif                sbscript.Append("                txtInput.rows = parseInt(txtInput.rows) - " + this.RegulateRows + ";\n");
 21InBlock.gif                sbscript.Append("        }\n");
 22InBlock.gif                sbscript.Append("    </script>\n");
 23InBlock.gif                sbscript.Append("<!--调节输入框高度 end-->\n");
 24InBlock.gif
 25InBlock.gif                System.Web.UI.ClientScriptManager client = this.Page.ClientScript;
 26InBlock.gif                Type cstype = Page.GetType();
 27InBlock.gif                if (!client.IsStartupScriptRegistered(cstype, "regulateheight"))
 28InBlock.gif                    client.RegisterStartupScript(cstype, "regulateheight", sbscript.ToString());
 29InBlock.gif
 30InBlock.gif                StringBuilder sbhtml = new StringBuilder();
 31InBlock.gif                sbhtml.Append("<div style=\"height:24px;\">");
 32InBlock.gif                sbhtml.Append("    " + this.ImageIconMinus + "&nbsp;&nbsp;" + this.ImageIconPlus);
 33InBlock.gif                sbhtml.Append("</div>");
 34InBlock.gif                output.Write(sbhtml.ToString());
 35ExpandedSubBlockEnd.gif                #endregion

 36ExpandedBlockEnd.gif            }

 37 None.gif             // 下拉框模式
 38 None.gif              if  ( this .HasDropDownList)
 39 ExpandedBlockStart.gifContractedBlock.gif             dot.gif {
 40ContractedSubBlock.gifExpandedSubBlockStart.gif                dot.gif#region
 41InBlock.gif                //已经改为点击输入框的时候激发客户端事件
 42InBlock.gif                //output.Write("<img id=\"" + this.ClientID + "Icon\" src=\"" + this.ImageIconShowDropDown + "\" border=\"0\" style=\"cursor:hand;\" οnclick=\"ShowList('" + this.ClientID + "');\" align=\"absmiddle\" />\n");
 43InBlock.gif                int width = Convert.ToInt32(base.Width.Value);
 44InBlock.gif                width = width == 0 ? 100 : width;
 45InBlock.gif                output.AddAttribute(System.Web.UI.HtmlTextWriterAttribute.Style, "display:none;position:absolute;");
 46InBlock.gif                output.AddAttribute(System.Web.UI.HtmlTextWriterAttribute.Id, this.ClientID + "List");
 47InBlock.gif                output.RenderBeginTag(HtmlTextWriterTag.Div);
 48InBlock.gif                output.AddAttribute(System.Web.UI.HtmlTextWriterAttribute.Style, "margin-left:" + width + "px;");
 49InBlock.gif                output.RenderBeginTag(HtmlTextWriterTag.Span);
 50InBlock.gif
 51InBlock.gif                drpList.ID = base.ID+"Items";
 52InBlock.gif                drpList.Style.Add("margin-left""-" + width + "px");
 53InBlock.gif                drpList.Attributes.Add("onchange""document.getElementById('" + this.ClientID + "').value=this.options[this.selectedIndex].text;document.getElementById('" + this.ClientID + "List').style.display='none';");
 54InBlock.gif                //drpList.Attributes.Add("onblur", "this.style.display='none'");
 55InBlock.gif                if (this.DropDownListDataSource !=null && this.DropDownListDataSource.Rows.Count > 0
 56ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
 57InBlock.gif                    drpList.DataTextField = this.DataTextField;
 58InBlock.gif                    drpList.DataValueField = this.DataValueField;
 59InBlock.gif                    drpList.DataSource = this.DropDownListDataSource.DefaultView;
 60InBlock.gif                    drpList.DataBind();
 61ExpandedSubBlockEnd.gif                }

 62InBlock.gif                if(HasDefaultItem)
 63InBlock.gif                    drpList.Items.Insert(0,new ListItem(this.DefaultItemText,this.DefaultItemValue));
 64InBlock.gif                foreach (ListItem item in drpList.Items)
 65ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
 66InBlock.gif                    if (item.Text == base.Text.Trim())
 67ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{
 68InBlock.gif                        item.Selected = true;
 69InBlock.gif                        break;
 70ExpandedSubBlockEnd.gif                    }

 71ExpandedSubBlockEnd.gif                }

 72InBlock.gif                this.drpList.RenderControl(output);
 73InBlock.gif                output.RenderEndTag();
 74InBlock.gif                output.RenderEndTag();
 75InBlock.gif
 76InBlock.gif                StringBuilder sbscript = new StringBuilder();
 77ContractedSubBlock.gifExpandedSubBlockStart.gif                js内容#region js内容
 78InBlock.gif                sbscript.Append("\n<script type=\"text/javascript\">\n");
 79InBlock.gif                sbscript.Append("    <!--下拉框显示隐藏 begin-->\n");
 80InBlock.gif                sbscript.Append("    function ShowList(id)\n");
 81InBlock.gif                sbscript.Append("    {\n");
 82InBlock.gif                sbscript.Append("        var txtInput = document.getElementById(id);\n");
 83InBlock.gif                sbscript.Append("        var drpList = document.getElementById(id+'List');\n");
 84InBlock.gif                //sbscript.Append("        var drpIcon = document.getElementById(id+'Icon');\n");
 85InBlock.gif                sbscript.Append("        var drpItems = document.getElementById(id+'Items');\n");    //下拉框
 86InBlock.gif                sbscript.Append("        if(drpList.style.display == 'block')\n");
 87InBlock.gif                sbscript.Append("        {\n");
 88InBlock.gif                sbscript.Append("            txtInput.title = '点击显示下拉框';\n");
 89InBlock.gif                sbscript.Append("            drpList.style.display = 'none';\n");
 90InBlock.gif                //sbscript.Append("            drpIcon.src = '" + this.ImageIconShowDropDown + "';\n");
 91InBlock.gif                sbscript.Append("        }\n");
 92InBlock.gif                sbscript.Append("        else\n");
 93InBlock.gif                sbscript.Append("        {\n");
 94InBlock.gif                sbscript.Append("            txtInput.title = '点击关闭下拉框';\n");
 95InBlock.gif                sbscript.Append("            drpList.style.display = 'block';\n");
 96InBlock.gif                sbscript.Append("            drpList.style.left = GetOffsetLeft(txtInput)+'px';\n");
 97InBlock.gif                sbscript.Append("            drpList.style.top = (GetOffsetTop(txtInput)+1)+'px';\n");
 98InBlock.gif                sbscript.Append("            drpItems.style.width = txtInput.offsetWidth+'px';\n");
 99InBlock.gif                //sbscript.Append("            drpIcon.src = '" + this.ImageIconHideDropDown + "';\n");
100InBlock.gif                sbscript.Append("        }\n");
101InBlock.gif                sbscript.Append("    }\n");
102InBlock.gif                sbscript.Append("    <!--下拉框显示隐藏 end-->\n");
103InBlock.gif                sbscript.Append("    function GetOffsetTop(e) \n");
104InBlock.gif                sbscript.Append("    {\n");
105InBlock.gif                sbscript.Append("        var offsetTop = e.offsetTop;\n");
106InBlock.gif                sbscript.Append("        var offsetParent = e.offsetParent;\n");
107InBlock.gif                sbscript.Append("        while(offsetParent)\n");
108InBlock.gif                sbscript.Append("        {\n");
109InBlock.gif                sbscript.Append("            offsetTop += offsetParent.offsetTop;\n");
110InBlock.gif                sbscript.Append("            offsetParent = offsetParent.offsetParent;\n");
111InBlock.gif                sbscript.Append("        }\n");
112InBlock.gif                sbscript.Append("        return offsetTop+e.offsetHeight;\n");
113InBlock.gif                sbscript.Append("    }\n");
114InBlock.gif                sbscript.Append("    function GetOffsetLeft(e) \n");
115InBlock.gif                sbscript.Append("    {\n");
116InBlock.gif                sbscript.Append("        var offsetLeft = e.offsetLeft;\n");
117InBlock.gif                sbscript.Append("        var offsetParent = e.offsetParent;\n");
118InBlock.gif                sbscript.Append("        while(offsetParent) \n");
119InBlock.gif                sbscript.Append("        {\n");
120InBlock.gif                sbscript.Append("            offsetLeft += offsetParent.offsetLeft;\n");
121InBlock.gif                sbscript.Append("            offsetParent = offsetParent.offsetParent;\n");
122InBlock.gif                sbscript.Append("        }\n");
123InBlock.gif                sbscript.Append("        return offsetLeft;\n");
124InBlock.gif                sbscript.Append("    }\n");
125InBlock.gif                sbscript.Append("</script>\n");
126InBlock.gif                # endregion
127InBlock.gif                System.Web.UI.ClientScriptManager client = this.Page.ClientScript;
128InBlock.gif                Type cstype = Page.GetType();
129InBlock.gif                if (!client.IsStartupScriptRegistered(cstype, "showlist"))
130InBlock.gif                    client.RegisterStartupScript(cstype, "showlist", sbscript.ToString());
131InBlock.gif
132ExpandedSubBlockEnd.gif                #endregion

133ExpandedBlockEnd.gif            }

134 None.gif

转载于:https://www.cnblogs.com/nowind/archive/2007/05/31/766658.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值