服务器控件开发之二:邮政编码控件

来源:互联网 发布:快速排序c语言实现 编辑:程序博客网 时间:2024/04/24 10:28
        邮政编码是在原有数值型控件上进行加工,相同的功能,只是减少部分代码就可以了。当然如此相同的控件有电话号码,手机等等,凡是碰到处理关于数字的控件都可以用同样的方法,区别点就是理性条件语句及正则表达式。代码如下:
控件说明 控件名称: PostcodeTextBox 功        能: 只能输入及粘贴数值型数据,无小数点。






using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace NetCRM.UI
{
    [DefaultProperty(
"Text")]
    [ToolboxData(
"<{0}:PostcodeTextBox runat=server></{0}:PostcodeTextBox>")]
    
public class PostcodeTextBox : TextBox
    
{
        
private string strHeader = "<script language="javascript" type="text/javascript"> <!--  ";
        
private string strFooter = "-->  </script>";

        
protected override void AddAttributesToRender(HtmlTextWriter writer)
        
{
            
this.Attributes.Add("onkeypress""PostcodeTextBox_KeyPress()");
            
this.Attributes.Add("onpaste""return PostcodeTextBox_Paste()");
            
base.AddAttributesToRender(writer);
        }


        
protected override void OnPreRender(EventArgs e)
        
{
            
string strScript = "        function PostcodeTextBox_KeyPress() ";
            strScript 
= strScript + "   {    ";
            strScript 
= strScript + "       var keycode=event.keyCode;   ";
            strScript 
= strScript + "       if(!(keycode>47&&keycode<58))    ";
            strScript 
= strScript + "           event.keyCode=0;     ";
            strScript 
= strScript + "   }    ";
            strScript 
= strScript + "   function PostcodeTextBox_Paste()   ";
            strScript 
= strScript + "   {    ";
            strScript 
= strScript + "       var b=clipboardData.getData('text');     ";
            strScript 
= strScript + "       var c=b.match("^/d+$");   ";
            strScript 
= strScript + "       return (c==null||c==false)?false:true;   ";
            strScript 
= strScript + "   }    ";
            strScript 
= strHeader + strScript + strFooter;
            
if (!this.Page.ClientScript.IsStartupScriptRegistered("PostcodeTextBoxScript"))
                
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "PostcodeTextBoxBoxScript", strScript);
            
base.OnPreRender(e);
        }

    }

}




控件缺点:
1、向用户曝露原代码。与服务器控件开发之一:数值型控件,有相同的问题。解决这种办法非常简单,就是将javascript原代码写成js文件,然后在page.clientscript.registerstartup中注册相关代码时只需要将连接到里面就行了。