WEB自訂控制項編程是ASP.NET編程裡面比較難的一部分,尤其是複雜的控制項需要用到平常不常用的一些技術技巧。
下面根據一些我自己的實踐經驗,向讀者介紹一下這方面的技術。
簡單的繼承控制項:ConfirmButton
我們在用ASP.NET編寫應用程式的時候,經常需要在按鈕提交的時候彈出一個[OK][Cancel]的確認框,以防止使用者在操作的時候誤提交。實現這個功能傳統的方法是在字碼頁的Page_Load事件裡添加按鈕的Attributes,但是每個按鈕都要添加一遍比較麻煩。下面我們來自己製作一個有這樣功能的按鈕解決這個問題。
(常式採用C#語言)
1.建立項目
首先開啟Visual Studio.net,建立一個新的Web控制項陳列庫項目,取名TestLib。在方案總管裡會有一個標識為WebCustomControl1.cs的原始碼檔案,將其改名為ConfirmButton.cs。
2.編輯代碼
開啟ConfirmButton.cs源檔案,將類名“WebCustomControl1”改為“ConfirmButton”;將類繼承自“System.Web.UI.WebControls.WebControl”改為“System.Web.UI.WebControls.Button”;
將代碼“[DefaultProperty("Text"),
ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")]”
改為“[DefaultProperty("Text"),
ToolboxData("<{0}:ConfirmButton runat=server></{0}:ConfirmButton>")]”,這樣使得aspx頁面顯示的該控制項xml代碼標識顯示“<cc1:ConfirmButton …> …</cc1: ConfirmButton>”。
下面進一步修改代碼,刪除原有代碼:
private string text;
[Bindable(true),
Category("Appearance"),
DefaultValue("")]
public string Text
{
get
{
return text;
}
set
{
text = value;
}
}
添加新代碼(用於設定在彈出的確認框中顯示的資訊):
private string _confirmMessage = "Is OK?";
[Bindable(true),
Category("Appearance"),
DefaultValue("Is OK?")]
public string ConfirmMessage
{
get
{
return _confirmMessage;
}
set
{
_confirmMessage = value;
}
}
最後將
protected override void Render(HtmlTextWriter output)
{
output.Write(Text);
}
改為protected override void Render(HtmlTextWriter output)
{
base.Attributes.Add("OnClick","return confirm('"+this._confirmMessage+"');");
base.Render(output);
}
3.添加在工具箱中顯示的表徵圖
選擇菜單[項目]/[添加新項],在彈出的對話方塊中選擇建立“位元影像檔案”並將檔案名稱改為“ConfirmButton”(很重要,位元影像檔案名稱必需和類名一致)。然後在“方案總管”中選中該位元影像檔案,並在屬性設定框中將“產生操作”的值設定為“內嵌資源”。
好了,編譯一下吧,一切OK了。剩下的事,就是把編譯好的dll檔案找到並添加到工具箱中,在以後的WEB應用程式中就可以用了。