panel,imagebutton和click
在一个页面里有一个button,点击button,可以显示原来隐藏的panel,显示的同时给panel动态加载了一些imagebutton,点击其中imagebutton后panel消失,可为什么最后panel没有消失,这是怎么一回事啊?下面是我的代码:
单击button的事件
protected void Button2_Click(object sender, EventArgs e)
{
if (Panel1.Visible == false)
{
ImageButton temp;
for (int i = 1; i <= 24; i++)
{
temp = new ImageButton();
temp.ImageUrl = "~/pictures/face/boy/ " + i.ToString() + ".bmp ";
temp.BorderWidth = 2;
temp.BorderColor = System.Drawing.Color.FromArgb(252,134,4);
temp.Click += new ImageClickEventHandler(image_click);//给imagebutton添加事件
Panel1.Controls.Add(temp);
if (i % 4 == 0) Panel1.Controls.Add(new LiteralControl( " <br> "));
}
Panel1.Visible = true;
}
else Panel1.Visible = false;
}
//单击imagebutton的事件
protected void image_click(object sender, ImageClickEventArgs e)
{
Panel1.Visible = false;
}
------解决方案--------------------http://www.cnblogs.com/webabcd/archive/2007/03/12/671400.html
参看一下这篇文章,一般动态控件的设置或者事件不起作用,都是源于控件和页面的生命周期关系没有处理好。
------解决方案--------------------页面生命周期应该在PreInit之前首先经历FrameworkInitialize,这个过程中创建所有你在设计代码中声明的控件。你的Panel是在aspx上声明的,在页面每一次postback的时候都被重新创建了,你自己用代码创建的控件你自己负责重建。