经常在论坛里看到类似这样的问题:“…如何在点击删除按钮的时候弹出个确认删除对话框”。
下面我们来自己写一个这样的自定义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();
}
}
}
|
|
相关推荐
工作室开发的web服务器控件。 VJSoft.SrvCtrl.PopupWindow 欢迎访问威杰工作室,开发各种网站,软硬件。 网址http://www.vjstudio.cn
初始化颜色对话框自定义颜色集,显示颜色对话框的自定义颜色控件C#源代码 //初始化颜色对话框自定义颜色集 ColorDialog MyDlg = new ColorDialog(); MyDlg.CustomColors = new int[]{6916092, 15195440, 16107657,...
Qt 自定义 Calendar 日历 控件 方便控制 及实现样式表
一个自定义的WEB打印控件,免费的 <OBJECT ID="DLPrinter" CLASSID="CLSID:5C230622-45E5-4e3c-893C-3BFDDC4DB5E4" height="0" width="0" codebase="DLPrinter.cab" ></OBJECT> DLPrinter.MarginLeft=0; ...
自定义等待服务器控件,提示和确认控件,进度条控件等.
MFC中添加对话框和Windows标准控件的ppt,提示清楚完整,方便初学者上手。
Web中的弹出对话框是比较难的,这里有两个控件,直接添加在VS2005的工具箱中,直接拖在页面上就能使用!不过我现在还有一个控件还不会使用呢,刚刚找到的资料!
vb.net 自定义控件 自定义属性 UITypeEditor UI 类型编辑器 实例 提供一个示例 UITypeEditor,它使用 IWindowsFormsEditorService 显示用于用户输入的 Form。 IWindowsFormsEditorService 只能通过 PropertyGrid ...
自定义Web的上传控件
JavaScript开发,各种web自定义控件,包括dialog、alert、laydate、autocomplete等等。
弹出对话框控件源码 弹出消息框,弹出确认框,弹出aspx内容页。 注:支持框架集 简介:该内容有三个控件。。dmessage控件用于弹出消息框和确认框。。。有两个事件一个确认和一个取消(确认框时);dpage用于弹出...
Jokul制作学习制作Web自定义控件的很好的几个例子 控件1:ConfirmButton 点击弹出确认对话框。 控件2:Horologe 显示为钟表日历的控件,拥有DateTime的属性特征。 控件3:LoginCtrl 登录框控件,基本的TextBox...
Asp.net弹出对话框控件
简单的jQuery确认对话框鼠标点击弹出提示对话框插件
MFC对话框分割条拖动控件,水平垂直任意分隔拖动
自定义组合控件之选择对话框 自定义组合控件之选择对话框
用户自定义控件,用户自定义控件,用户自定义控件,用户自定义控件,用户自定义控件,用户自定义控件,用户自定义控件,用户自定义控件,用户自定义控件用户自定义控件,用户自定义控件,用户自定义控件,用户自定义...
asp.net漂亮弹出对话框控件 asp.net漂亮弹出对话框控件
不使用控件就可以弹出打开文件对话框
VC动态改变对话框大小,其中控件也跟着改变,很实用的。。。