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

转载 2006年06月22日 22:29:00

不少组件文章 http://cn.codeof.com/articles/.net/com-controls-development/2/

 

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

作者: 未知
日期:

www.ZTechShop.net
SUSE LINUX 10.1 Sale - $9.99. Linux & BSD distributions delivered!

Globe7 - Free Download!
Phone + Chat + Radio + TV Free! Download Now!

Globe7 - Free !
Call Free, Chat Free and Watch TV for Free!

经常在论坛里看到类似这样的问题:“…如何在点击删除按钮的时候弹出个确认删除对话框”。

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

}

}

}

用JavaScript写的一个自定义弹出式对话框

最近闲来无事,用js自己做了一个弹出式对话框 下图是我的设计思路 下面是具体的js代码 1,首先定义几个自定义函数 //判断是否为数组     funct...
  • u014649204
  • u014649204
  • 2014年04月19日 18:41
  • 975

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

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

PHP弹出确认框

双选确认框,点击是跳转到yes.html,点击否跳转到no.html php echo " if(confirm( '请选择跳转页面,是跳转到yes.html 否跳转到no.html? ...
  • bfboys
  • bfboys
  • 2016年10月07日 10:13
  • 1230

SAP ABAP编程 弹出按选择对话框函数-'POPUP_TO_CONFIRM'

SAP 中很多时候是需要弹出式对话框的,提醒客户是否要进行某一个操作,我们可以调用CALL FUNCTION 'POPUP_TO_CONFIRM' 下面简单介绍常用的参数。...
  • qinyuezhan
  • qinyuezhan
  • 2014年11月07日 16:12
  • 2496

angular 全局confirm确认框

全局确认框是在弹出模态框的基础上修改的。
  • xuanhaiyang2008
  • xuanhaiyang2008
  • 2016年08月08日 17:49
  • 8894

iOS---弹出提示对话框的封装

IOS—弹出提示对话框的封装一、就一个选项的对话框代码块#pragma mark - 封装弹出对话框方法 // 提示错误信息 - (void)showError:(NSString *)errorMs...
  • JamieCheung
  • JamieCheung
  • 2016年09月20日 16:21
  • 2158

MFC弹出对话框之前先进行条件判断以决定是否弹出对话框

最近帮客户做了一个MFC小工具,发给客户使用之后,我就思考商业软件在运行前检测电脑是否可以运行该软件,有用加密狗的也有用注册表的方式.如果要我做这样的一个软件,我该怎么实现软件运行前检测呢,于是我想到...
  • quchong10527
  • quchong10527
  • 2016年04月24日 22:20
  • 930

android 系统提示对话框(AlertDialog)的使用

在按键单击事件中添加创建对话框并设置相关属性。        dialogButton=(Button)findViewById(R.id.bt_hello); dialog...
  • meng425841867
  • meng425841867
  • 2013年01月21日 10:22
  • 111836

ASP.NET 用户控件实现后台确认提醒框

效果图 CSS /** *createTime:二〇一六年五月十九日 *author:ChinaLzw *Description:确认提醒框样式 **/ .mall-dialog{font: ...
  • qq285679784
  • qq285679784
  • 2016年05月19日 11:42
  • 551

安卓中实现自定义对话框以及自定义显示位置

项目中有用到如下的对话框效果,本来是想用popwindow来实现的结果发现不能覆盖原来的布局,不知道是我了解的不够还是本身就不行,发现弹出的对话框会与原来的布局重叠 后面就用对话框来实现了,接下...
  • laohu715
  • laohu715
  • 2017年03月18日 16:17
  • 1053
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:教你做一个可以弹出确认对话框的自定义Web服务器控件ConfirmButton
举报原因:
原因补充:

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