动态生成按钮的click事件怎么不执行???
private void Button1_Click(object sender, System.EventArgs e)
{
Button myBt = new Button();
myBt.Text="单击";
myBt.ID ="Button4";
myBt.Click += new System.EventHandler(this.dd);
Page.Controls[1].Controls.Add( myBt );
}
我把以上代码放到Page_Load可以执行,但是我是在单击Button1的时候才生成这个按钮,单击Button1动态生成的按钮则不执行dd方法。
请高手指点。
public void dd(object sender, System.EventArgs e)
{
myDbAccess.Alert("执行",Page);
}
问题点数:20、回复次数:14Top
1 楼conner(测试)回复于 2005-04-04 10:12:13 得分 0
急呀!Top
2 楼xxuu503(中国没有prison break只是因为the company不让拍)回复于 2005-04-04 10:22:36 得分 1
要添加一下事件:
mybt.click+=new eventhandler(address of 函数名字)
//添到你的button加入之后Top
3 楼conner(测试)回复于 2005-04-04 10:40:52 得分 0
哥们我上边已经加了myBt.Click += new System.EventHandler(this.dd);Top
4 楼conner(测试)回复于 2005-04-04 10:53:06 得分 0
我发现只有放到page_load里才执行。放到
if(!IsPostBack)
{
放到这里就不执行了!!!!
}
Top
5 楼LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)回复于 2005-04-04 11:02:48 得分 2
http://community.csdn.net/Expert/topic/3901/3901685.xml?temp=.6412012Top
6 楼conner(测试)回复于 2005-04-04 12:00:27 得分 0
???Top
7 楼conner(测试)回复于 2005-04-04 13:44:01 得分 0
???????Top
8 楼cuike519(I will be back!)回复于 2005-04-04 21:35:48 得分 10
首先我想说明该引起该问题的原因:
由于页面执行周期的原因,你的事件处理函数中构造的对象在dopostback之后没有被重新构造出来,这时候页面的控件树中没有这个控件(上次动态创建的),当然无法激发该控件的事件处理函数。HTML是无状态的,在重新加载页面需要重新构造上次的控件包括你动态创建的。
Page_Load和Init方法都先于事件处理程序执行,所以你只要在这两个函数中重新构造你的控件就可以激发你动态添加的控件的事件了!Top
9 楼nadoo()回复于 2005-04-04 22:00:27 得分 0
楼上的强, 我们是应该学习ASP.Net的处理机制.Top
10 楼ziffle(国际品牌运动原单:http://shop33388984.taobao.com/ 朋友网店新开,最)回复于 2005-04-04 23:48:54 得分 0
asp 是无状态连接的,你第二次请求你判断了是否是回传页,然后把代码写在了..里面,所以你并没有再创建控件并进行初始化,你的控件的事件也不可能注册成功,不可能执行了
Top
11 楼minghui000(沉迷网络游戏)回复于 2005-04-05 01:07:53 得分 0
upTop
12 楼s1ihome(My hometown is a beautiful village)回复于 2005-04-05 02:26:32 得分 0
学习 cuike519(marshal)Top
13 楼LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)回复于 2005-04-05 07:11:46 得分 2
在IsPostBack的时候也要生成按钮的Top
14 楼webdiyer(.net资源精华—www.dotneturls.com)回复于 2005-04-07 10:46:09 得分 5
cuike519(marshal) 说得对,这个问题是因为动态添加的控件无法保存状态引起的,换一种方法可以实现你的要求,那就是在页面上事先创建这个按钮,只是把它的Visible属性设为false,在点击前一按钮时再将它的Visible设为true,这样它的Click事件就会正常被激发。Top




