服務器控件開發之二:郵政編碼控件

        郵政編碼是在原有數值型控件上進行加工,相同的功能,只是減少部分代碼就可以了。當然如此相同的控件有電話號碼,手機等等,凡是碰到處理關於數字的控件都可以用同樣的方法,區別點就是理性條件語句及正則表達式。代碼如下:
控件說明
控件名稱: 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中註冊相關代碼時只需要將連接到裏面就行了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章