作者:活靶子[原创]       出处:AspxBoy.Com
经常在论坛里看到类似这样的问题:“…如何在点击删除按钮的时候弹出个确认删除对话框”。

下面我们来自己写一个这样的自定义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();

}

}

}

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

  1. 实现对gridview删除行时弹出确认对话框的四种方法

    实现对gridview删除行时弹出确认对话框的四种方法 在.net2.0中,实现对gridview删除行时弹出确认对话框的四种方法 1,GridView中如何使用CommandField删除时,弹出确 ...

  2. 表单form提交前弹出确认对话框

    表单form提交前进弹出确认对话框 定义一个函数: <script language="javascript"> function sumbit_sure(){ var ...

  3. 如何在离开页面时弹出确认对话框

    离开页面确认主要是利用了onbeforeunload事件,当该事件声明为: Code <body onbeforeunload="return pageBeforeunload(eve ...

  4. a链接中 JS弹出确认对话框方法

    一种: <a href="javascript:if(confirm('确实要删除该内容吗?'))location='http://www.google.com'">弹 ...

  5. GridView实现删除时弹出确认对话框

    在RowDataBound事件中添加如下代码:  1 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs ...

  6. 蓝牙连接每次弹出确认框问题的排查及解决

    一周前客户提交了一个Bug. 具体的问题是这样的, 客户的一台设备坏了, 临时换了一台设备后发现,新换的设备不像老设备那样每次进行蓝牙连接时都提示要确认配对.这个问题确实是不对比不知道,一直以来谁都没 ...

  7. html弹窗确认取消公告代码,js 弹出确认与取消对话框的四种方法

    1,js弹出删除确认框 复制代码 代码示例: 弹出窗口 2,js删除前确认 复制代码 代码示例: function delete_confirm(e) { if (event.srcelement.o ...

  8. js 弹出确认 取消对话框

    文章目录 js 弹出确认 取消对话框 一种: <a href="javascript:if(confirm('确实要删除该内容吗?'))location='http://www.goo ...

  9. ASP.NET弹出一个对话框

    我们在ASP.NET程序的开发过程中,常常需要向用户给出提示信息,比如是否"操作成功","确定"还是"取消"操作.         (1) ...

最新文章

  1. vuejs出的手机app有哪些_详解Vue webapp项目通过HBulider打包原生APP
  2. centos7安装mysql 依赖检测失败:_gcc-centos7安装mysqlworkbench依赖检测失败
  3. 将键值对当作实参传进函数
  4. 【两分钟带你了解树】数据结构04-树结构的概述
  5. NLP:基于nltk和jieba库对文本实现提取文本摘要(两种方法实现:top_n_summary和mean_scored_summary)
  6. 基于plc计算机控制系统,基于PLC的工业控制系统特点的分析
  7. Java 线程多线程编程2---线程同步
  8. gin redis 链接不上_Redis 高并发问题,及解决方案!
  9. web.xml中配置:通用的用户登录过滤器(SessionFilter)
  10. oracle-00028,Oracle 10g錯誤:「ORA-00028:您的會話已被終止」
  11. 史上最简单的上传文件到linux系统方法
  12. python北风网培训班视频
  13. win10企业版激活简便方法
  14. 使用Excel拼接SQL语句
  15. 计算机系统盘怎么扩充,如何给电脑c盘扩容
  16. xlsx表格怎么筛选重复数据_excel表格如何过滤筛选重复项内容
  17. Exploratory Social Network Analysis with Pajek(第三版)8
  18. 在 wpf 中使用 main 方法
  19. 【XSY1537】五颜六色的幻想乡 数学 生成树计数 拉格朗日插值
  20. 吴军的谷歌方法论|周末互动|如何避免成为耍小聪明的人

热门文章

  1. 单片机红绿灯电路灯有几种_LED路灯电源防雷与设计方案
  2. dbscan算法中 参数的意义_基于变参数的DBSCAN算法
  3. int long java_java long int的区别
  4. python中的模块如何学习_在python中学习队列模块(如何运行它)
  5. js中Object类型和Array类型的变量被赋值(复制)给其他变量后,修改被赋值(复制)的新变量的值,会影响原始变量的值,这是为什么呢?
  6. 在CentOS 6.8 x86_64上安装nghttp2最新版及让curl具有http2特性
  7. libcurl下载限速编程调研
  8. Revit结构2021-2022从零到精通
  9. RTTI(三)相关函数1【转自大富翁】
  10. Win7/Win2008下IIS配置Asp站点启用父路径的设置方法