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

转载 2007年10月14日 20:11:00
可以弹出确认对话框的自定义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(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();
  
   }
  
   }
  
  }
  
 

angular服务插件1——对话框&提示框

const angular = require("angular"); const jqLite = angular.element;/** * @ngdoc service * @name co...
  • qq_20438233
  • qq_20438233
  • 2015年08月30日 19:03
  • 1773

Android第三方开源对话消息提示框:SweetAlertDialog(sweet-alert-dialog)

原博:http://blog.csdn.net/zhangphil   Android第三方开源对话消息提示框:SweetAlertDialog(sweet-alert-dialog) Android...
  • zhangli_
  • zhangli_
  • 2015年12月01日 17:04
  • 3929

通过纯JS和css实现自定义弹出对话框

需求: 实现通过一个弹出对话框来选择下拉列表中对应值进行参数设置操作,及弹出对话框中需要有一个下拉列表输入和一个确定按钮即可,要求弹出对话框后,背部界面不能够操作或者被屏蔽灰掉。 思路: 1.开...
  • wuruixn
  • wuruixn
  • 2013年03月18日 13:58
  • 10843

[原创]c#开发的弹出模式对话框的web服务器控件

  • 2009年04月23日 08:31
  • 17KB
  • 下载

JQuery EasyUI弹出对话框解决Asp.net服务器控件无法执行后台代码的方法

jquery-easyui是一个基于jquery的图形界面插件,利用easyui可以创建很多好看的网页界面效果,easyui的相关地址是:http://jquery-easyui.wikidot.co...
  • scq503
  • scq503
  • 2015年03月05日 17:53
  • 603

JQuery EasyUI弹出对话框解决Asp.net服务器控件无法执行后台代码的方法

jquery-easyui是一个基于jquery的图形界面插件,利用easyui可以创建很多好看的网页界面效果,easyui的相关地址是:http://jquery-easyui.wikidot.co...
  • wilsonke
  • wilsonke
  • 2013年11月20日 12:42
  • 1888

ASP.NET 部署和使用自定义 Web 服务器控件

本演练演示如何创建和测试自定义 ASP.NET Web 服务器控件。 在本演练中,您将学会如何执行以下任务: 创建一个 ASP.NET Web 服务器控件。 通过向该控件添加元数据来...
  • qq285679784
  • qq285679784
  • 2017年06月16日 09:39
  • 929

ASP.NET自定义Web服务器控件-Button

using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; usin...
  • LMAOhuaNL
  • LMAOhuaNL
  • 2011年08月26日 00:00
  • 782

ASP.NET自定义Web服务器控件-login登录控件

using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; usin...
  • LMAOhuaNL
  • LMAOhuaNL
  • 2011年08月26日 09:44
  • 1104

ASP.NET自定义Web服务器控件-DropDownList/Select下拉列表控件

using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; usin...
  • LMAOhuaNL
  • LMAOhuaNL
  • 2011年08月26日 00:50
  • 1269
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:可以弹出确认对话框的自定义Web服务器控件ConfirmButton
举报原因:
原因补充:

(最多只允许输入30个字)