生活随笔
收集整理的這篇文章主要介紹了
可以弹出确认对话框的自定义Web服务器控件ConfirmButton
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
| 作者:活靶子[原創(chuàng)]??? | ???出處:AspxBoy.Com |
經(jīng)常在論壇里看到類(lèi)似這樣的問(wèn)題:“…如何在點(diǎn)擊刪除按鈕的時(shí)候彈出個(gè)確認(rèn)刪除對(duì)話框”。
下面我們來(lái)自己寫(xiě)一個(gè)這樣的自定義Web服務(wù)器控件!
思路如下:
繼承System.Web.UI.WebControls.Button控件
增加一個(gè)屬性“ConfirmMessage”來(lái)表示彈出確認(rèn)框上面的提示信息。
在服務(wù)器控件呈現(xiàn)在頁(yè)面之前把一段javascript寫(xiě)到頁(yè)面
內(nèi)容如下:
<script language="JavaScript">
<!--
function _doAspxBoyConfirm()
{
return confirm("你確認(rèn)刪除/保存嗎??")
}
//-->
</script>
查一下msdn中對(duì)于Control.OnPreRender 方法的描述
可以得到“此方法通知服務(wù)器控件在保存視圖狀態(tài)和呈現(xiàn)內(nèi)容之前,執(zhí)行任何必要的預(yù)呈現(xiàn)步驟”.
所以我們只要在OnPreRender方法內(nèi) 用Page.RegisterClientScriptBlock把這段javascript發(fā)送到客戶(hù)端,并且給Button. Attributes屬性?xún)?nèi)添加一個(gè)“onclick”的客戶(hù)端屬性對(duì)應(yīng)值為: "return _doAspxBoyConfirm()”.
詳細(xì)情況可以查閱
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemwebuiwebcontrolswebcontrolclassattributestopic.htm
這樣一個(gè)具有ConFirm功能的Button就基本上建立起來(lái)了。
新建一個(gè)測(cè)試該控件的工程
在工具箱上點(diǎn)右鍵選擇“添加/移除項(xiàng)”,點(diǎn)擊瀏覽選擇編譯好的dll文件,點(diǎn)擊確定,你會(huì)發(fā)現(xiàn)ConFirmButton已經(jīng)添加到工具箱內(nèi)了
將其托到一個(gè)Aspx頁(yè)面內(nèi) 在屬性設(shè)置內(nèi)給ConfirmMessage值為你要的彈出框內(nèi)容比如“確定刪除嗎?”,按F5運(yùn)行。
當(dāng)點(diǎn)該按鈕時(shí)會(huì)彈出一個(gè)confirm對(duì)話框詢(xún)問(wèn)“確定刪除嗎?”,如果點(diǎn)擊確定則執(zhí)行button的Button_Click事件,如果點(diǎn)擊取消則不執(zhí)行。
你可以查看他生成的html代碼,以加深對(duì)該控件工作原理的理解
完整的代碼如下:
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Text;
namespace AspxBoy.Com.ConfirmButton
{
/// <summary>
/// Button點(diǎn)擊時(shí)會(huì)彈出一個(gè)對(duì)話框要求確認(rèn)
/// </summary>
public class ConfirmButton : System.Web.UI.WebControls.Button
{
private string _confirmMessage;
/// <summary>
/// 當(dāng)客戶(hù)端點(diǎn)擊此Button時(shí)彈出的提示消息筐的內(nèi)容
/// </summary>
public string ConfirmMessage
{
get
{
return _confirmMessage;
}
set
{
_confirmMessage = value;
}
}
protected override void OnPreRender(System.EventArgs e)
{
StringBuilder sb = new StringBuilder();
sb.Append("<script language=/"JavaScript/">");
sb.Append(System.Environment.NewLine);
sb.Append("<!--");
sb.Append(System.Environment.NewLine);
sb.Append("/*--------------------------------------------");
sb.Append(System.Environment.NewLine);
sb.Append("ControlName:/t/tAspxBoy.Com.ConfirmButton");
sb.Append(System.Environment.NewLine);
sb.Append("AuthorName:/t/t/tHuobazi,WuMeibo");
sb.Append(System.Environment.NewLine);
sb.Append("CopyRight:/t/t/twww.AspxBoy.Com");
sb.Append(System.Environment.NewLine);
sb.Append("---------------------------------------------*/");
sb.Append(System.Environment.NewLine);
sb.Append("function _doAspxBoyConfirm()");
sb.Append(System.Environment.NewLine);
sb.Append("{");
sb.Append(System.Environment.NewLine);
sb.Append("return confirm(/"");
sb.Append(ConfirmMessage);
sb.Append("/")");
sb.Append(System.Environment.NewLine);
sb.Append("}");
sb.Append(System.Environment.NewLine);
sb.Append("//-->");
sb.Append("</script>");
Page.RegisterClientScriptBlock("_doAspxBoyConfirm",sb.ToString());
this.Attributes.Add("onclick","return _doAspxBoyConfirm()");
base.OnPreRender(e);
}
public override void RenderBeginTag(HtmlTextWriter writer)
{
writer.WriteLine();
writer.Write("<!-------------------");
writer.Write("AspxBoy.Com.ConfirmButton Start");
writer.Write("/tAuthorName: /tHuobazi");
writer.WriteLine(" --------------------->");
writer.Write("<!-------------------- ");
writer.Write("Copyright:2004 Huobazi(www.AspxBoy.com)");
writer.Write(" ---------------------");
writer.WriteLine(">");
base.RenderBeginTag(writer);
}
public override void RenderEndTag(HtmlTextWriter writer)
{
base.RenderEndTag(writer);
writer.WriteLine();
writer.Write("<!------------------------------- ");
writer.Write("AspxBoy.Com.ConfirmButton End");
writer.Write(" --------------------------------");
writer.WriteLine(">");
writer.WriteLine();
}
}
}
|
|
總結(jié)
以上是生活随笔為你收集整理的可以弹出确认对话框的自定义Web服务器控件ConfirmButton的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。