欢迎光临
我们一直在努力

教你做一个可以弹出确认对话框的自定义Web服务器控件ConfirmButton-.NET教程,组件控件开发

建站超值云服务器,限时71元/月

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

下面我们来自己写一个这样的自定义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();

}

}

}

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 教你做一个可以弹出确认对话框的自定义Web服务器控件ConfirmButton-.NET教程,组件控件开发
分享到: 更多 (0)