程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 教你做一個可以彈出確認對話框的自定義Web服務器控件ConfirmButton

教你做一個可以彈出確認對話框的自定義Web服務器控件ConfirmButton

編輯:.NET實例教程

經常在論壇裡看到類似這樣的問題:“…如何在點擊刪除按鈕的時候彈出個確認刪除對話框”。
下面我們來自己寫一個這樣的自定義Web服務器控件!

思路如下

繼承System.Web.UI.WebControls.Button控件
增加一個屬性“ConfirmMessage”來表示彈出確認框上面的提示信息。
在服務器控件呈現在頁面之前把一段JavaScript寫到頁面
內容如下:
<script language="JavaScript">XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:Office" />
<!--
function _doASPxBoyConfirm()
{
return confirm("你確認刪除/保存嗎??")
}
//-->
</script>
查一下msdn中對於Control.OnPreRender 方法的描述
可以得到“此方法通知服務器控件在保存視圖狀態和呈現內容之前,執行任何必要的預呈現步驟”.
所以我們只要在OnPreRender方法內 用Page.ReGISterClIEntScriptBlock把這段Javascript發送到客戶端,並且給Button. Attributes屬性內添加一個“onclick”的客戶端屬性對應值為: "return _doASPxBoyConfirm()”.
詳細情況可以查閱
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/
Html/frlrfsystemwebuiwebcontrolswebcontrolclassattributestopic.htm
這樣一個具有ConFirm功能的Button就基本上建立起來了。
新建一個測試該控件的工程
在工具箱上點右鍵選擇“添加/移除項”,點擊浏覽選擇編譯好的dll文件,點擊確定,你會發現ConFirmButton已經添加到工具箱內了
將其托到一個ASPx頁面內 在屬性設置內給ConfirmMessage值為你要的彈出框內容比如“確定刪除嗎?”,按F5運行。
當點該按鈕時會彈出一個confirm對話框詢問“確定刪除嗎?”,如果點擊確定則執行button的Button_Click事件,如果點擊取消則不執行。
你可以查看他生成的Html代碼,以加深對該控件工作原理的理解

完整的代碼如下

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Text;
namespace ASPxBoy.Com.ConfirmButton
{
       /// <summary>
       /// Button點擊時會彈出一個對話框要求確認
       /// </summary>
       public class ConfirmButton : System.Web.UI.WebControls.Button
       {
              private string _confirmMessage;
              /// <summary>
              /// 當客戶端點擊此Button時彈出的提示消息筐的內容
              /// </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");
            &nbsp;        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();
              }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved