`
leonardleonard
  • 浏览: 812236 次
社区版块
存档分类
最新评论

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

阅读更多
作者:活靶子[原创]       出处: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();

}

}

}
分享到:
评论

相关推荐

    ASP.NET AJAX控件之ConfirmButton.rar

    在ASP.NET AJAX中,ConfirmButton控件是一个非常实用的功能,它允许开发者在用户执行特定操作(如提交表单)前弹出确认对话框,以增强用户交互性。 ConfirmButton控件是ASP.NET AJAX Control Toolkit的一部分,...

    AJAX控件之ConfirmButton

    这个事件会弹出一个确认对话框,用户可以选择"确定"或"取消"。如果用户选择"确定",则会继续执行正常的表单提交或Ajax请求;如果选择"取消",则会阻止进一步的操作。这样,ConfirmButton控件提供了一种优雅的方式来...

    aspx控件

    确认按钮(ConfirmButton)的主要功能是在用户点击时弹出一个JavaScript确认对话框,询问用户是否确定要执行后续操作。这在删除、保存或任何可能产生不可逆结果的操作中非常常见。确认按钮的实现通常涉及到以下步骤...

    Ajax Control Toolkit 34个服务器端控件的功能

    4. ConfirmButton:此控件将按钮与确认对话框相结合,确保用户在执行关键操作前进行确认。 5. DatePicker:改进了标准的日期选择器,提供更友好的用户界面和更多自定义选项。 6. DragPanel:支持拖放功能的面板,...

    Ajax控制与控件大全

    7. **HDI-AJAX-TK-ConfirmButton-CS**: ConfirmButton控件可能是在用户点击按钮前弹出确认对话框,增加了用户交互。 8. **HDI-AJAX-UpdatePanel-ServerUpdate-CS**: 展示了如何在服务器端触发UpdatePanel的更新,这...

    28个AjaxControlToolkit控件应用的实例----源码

    3. ConfirmButton:在按钮点击时弹出确认对话框。 4. DragPanel:支持拖放操作的面板,增加用户交互性。 5. DropDown:一个可折叠的下拉列表,可以快速切换选项。 6. Editor:一个富文本编辑器,用于创建和编辑HTML...

    VS2005的AJAX控件--Ajax Control.rar

    3. ModalPopup:创建模态对话框,用户必须关闭弹出窗口才能继续与页面交互。 4. UpdateProgress:在后台处理时显示进度指示器,提供更友好的用户体验。 5. Timer:定期触发事件,用于实现定时更新或刷新内容。 6. ...

    AjaxControlToolkit

    5. ConfirmButton:在用户点击按钮时弹出确认对话框,类似于JavaScript的confirm函数。 6. DragPanel:允许用户通过鼠标拖动来调整面板的位置和大小,增加交互性。 7. MaskedEdit:对输入字段进行格式验证,如电话...

    asp.net ajaxToolkit(全)

    它们涵盖了从日期选择器到图表,再到滑块和弹出对话框等各种功能。 **3. Toolkit中的主要控件** - Accordion:折叠面板控件,可以展示多个区域,每次只显示一个区域的内容。 - Calendar:日历控件,用户可以选择...

    Ajax ControlToolkit

    - **ConfirmButton**:扩展了标准按钮功能,弹出确认对话框,防止意外操作。 **4. 安装和使用** Ajax Control Toolkit通常通过NuGet包管理器安装,然后可以在Visual Studio的工具箱中找到这些控件。在页面上添加...

    ajaxToolKit中文帮助文档

    - **ModalPopupExtender**:创建弹出窗口,可以用于对话框或提示信息。 - **NumericUpDown**:提供上下箭头以方便用户在指定范围内增加或减少数值。 - **TabContainer**:创建多标签界面,每个标签页可以包含独立...

Global site tag (gtag.js) - Google Analytics