可以弹出确认对话框的自定义Web服务器控件ConfirmButton

经常在论坛里看到类似这样的问题:“…如何在点击删除按钮的时候弹出个确认删除对话框”。
  
  下面我们来自己写一个这样的自定义Web服务器控件!
  
  思路如下:
  
  继承System.Web.UI.WebControls.Button控件
  
  增加一个属性“ConfirmMessage”来表示弹出确认框上面的提示信息。
  
  在服务器控件呈现在页面之前把一段javascript写到页面
  
  内容如下:
  
  <script language="JavaScript">
  
  <!--
  
  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");
  
   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(http://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();
  
   }
  
   }
  
  } 
  

时间: 2024-09-22 20:51:59

可以弹出确认对话框的自定义Web服务器控件ConfirmButton的相关文章

教你做一个可以弹出确认对话框的自定义Web服务器控件ConfirmButton

web|web服务|web服务器|对话框|控件 经常在论坛里看到类似这样的问题:"-如何在点击删除按钮的时候弹出个确认删除对话框". 下面我们来自己写一个这样的自定义Web服务器控件! 思路如下: 继承System.Web.UI.WebControls.Button控件 增加一个属性"ConfirmMessage"来表示弹出确认框上面的提示信息. 在服务器控件呈现在页面之前把一段javascript写到页面 内容如下: <script language=&qu

js弹出确认对话框confirm(),alert(),prompt

window.alert() 使用警告.提示和确  代码如下 复制代码 <html> <head> <script type="text/javascript"> function message() { alert("该提示框是通过 onload 事件调用的.") } </script> </head> <body onload="message()"> </body

ASP.NET实例: GridView删除时弹出确认对话框

效果图:   html代码 <table align="center" bgcolor="#c0de98" border="0" cellpadding="0" cellspacing="1" width="99%"> <tr> <th colspan="2"> GridView演示</th> </tr> &

Javascript模仿弹出确认对话框

 这样的一个通用窗口.. 代码如下 construct(){ setting={ ID:'window ID', TitleText:'', Content:'content Text', // Parent:null, //窗口的父句柄 默认是加到 body里 boxCss:'class03_tank ', TitleCss:'class03_tank_top', //标题CSS ContentCss:'padtb10', //内容CSS width:280, height:'auto', b

jQuery实现时尚漂亮的弹出式对话框实例_jquery

本文实例讲述了jQuery实现时尚漂亮的弹出式对话框.分享给大家供大家参考.具体如下: 这是一款十分简洁漂亮的HTML5弹出对话框效果,基于jQuery来实现,引入了jquery1.6.2库. 本效果描述:用鼠标点击一下右上角的小图标,会弹出一个层对话框,里面可以提交留言.评论之类的. 运行效果截图如下: 具体代码如下: <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="

jquery插件jquery.confirm弹出确认消息_javascript技巧

本文为大家介绍了插件jquery.confirm弹出确认消息的实现方法,具有一定的参考价值,特分享给大家供大家参考,具体内容如下 实现效果: 具体代码: 1.插件默认参数 // 默认参数 $.confirm.defaults = { // 样式 css: "http://static.qianduanblog.com/css/jquery.confirm/default.min.css?v=" + Math.ceil(new Date() / 86400000), // 确认框内容 c

js弹出确认是否删除对话框

 这篇文章主要介绍了js弹出确认是否删除对话框,具体实现代码如下,需要的朋友可以参考下  代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml"

Android仿QQ消息提示实现弹出式对话框_Android

本文在<7种形式的Android Dialog使用实例>在这篇文章的基础进行学习,具体内容如下 1.概述 android原生控件向来以丑著称(新推出的Material Design当另说),因此几乎所有的应用都会特殊定制自己的UI样式.而其中弹出式提示框的定制尤为常见,本篇我们将从模仿QQ退出提示框来看一下常见的几种自定义提示框的实现方式. 这里使用的几种弹出框实现方法概括为以下几种: 自定义Dialog 自定义PopupWindow 自定义Layout View Activity的Dialo

Android仿QQ消息提示实现弹出式对话框

本文在<7种形式的Android Dialog使用实例>在这篇文章的基础进行学习,具体内容如下 1.概述 android原生控件向来以丑著称(新推出的Material Design当另说),因此几乎所有的应用都会特殊定制自己的UI样式.而其中弹出式提示框的定制尤为常见,本篇我们将从模仿QQ退出提示框来看一下常见的几种自定义提示框的实现方式. 这里使用的几种弹出框实现方法概括为以下几种: 自定义Dialog 自定义PopupWindow 自定义Layout View Activity的Dialo