可以得到“此方法通知服务器控件在保存视图状态和呈现内容之前,执行任何必要的预呈现步骤”.
所以我们只要在onprerender方法内 用Page.RegisterClientScriptBlock把这段javascript发送到客户端,并且给Button. Attributes属性内添加一个“onclick”的客户端属性对应值为: "return _doAspxBoyConfirm()”.
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();
}
}
}