• 可以弹出确认对话框的自定义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();
      
       }
      
       }
      
      } 
      
  • 相关阅读:
    面试
    无中生有
    数字称王-0-10000,
    数组排序
    uiview 阴影
    TTTAtibutedlabel again
    vim配置python编程环境及YouCompleteMe的安装教程
    centos7下vim8.1的编译安装教程
    centos7下误执行chmod -R 777 /后的权限修复方法
    如何用浏览器在线查看.ipynb文件
  • 原文地址:https://www.cnblogs.com/lzhdim/p/1345891.html
Copyright © 2020-2023  润新知