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

 来自: http://www.aspxboy.com/Files/71/66/276.Aspx 
学写一个可以弹出确认对话框的Web控件
经常在论坛里看到类似这样的问题:“…如何在点击删除按钮的时候弹出个确认删除对话框”。
下面我们来自己写一个这样的自定义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();
              }
       }
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值