控件名稱: | PostcodeTextBox |
功 能: | 只能輸入及粘貼數值型數據,無小數點。 |
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中註冊相關代碼時只需要將連接到裏面就行了。