科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

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

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

作者:巧巧读书 来源:巧巧读书 2008年6月23日

关键字: 网吧 网吧组网 网吧服务器架设

  • 评论
  • 分享微博
  • 分享邮件

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

  下面我们来自己写一个这样的自定义Web服务器控件!

  思路如下:

  继承System.Web.UI.WebControls.Button控件

  增加一个属性“ConfirmMessage”来表示弹出确认框上面的提示信息。

  在服务器控件呈现在页面之前把一段j写到页面

  内容如下:

  <script language="j">

  <!--

function _doASPxBoyConfirm()

{

return confirm("你确认删除/保存吗??")

}

//-->  function _doASPxBoyConfirm()

  {

  return confirm("你确认删除/保存吗??")

  }

  //-->

  </script>

  查一下msdn中对于Control.OnPreRender 方法的描述

  可以得到“此方法通知服务器控件在保存视图状态和呈现内容之前,执行任何必要的预呈现步骤”.

  所以我们只要在OnPreRender方法内 用Page.RegisterClientScriptBlock把这段j发送到客户端,并且给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=\"j">");

  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();

  }

  }

  }

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章