Убедитесь, что вы присвоили идентификатор кнопке, и убедитесь, что она одинакова при каждом ее создании.
Создайте элемент управления в перегрузке CreateChildControls, добавив его один раз в ответ на другое событие, будет недостаточно для сохранения его на странице.
Лучше всего будет отслеживать, нужно ли создавать кнопку или нет:
bool CreateButton
{
get
{
if (ViewState["CreateButton"] == null)
return false;
return (bool)ViewState["CreateButton"];
}
set
{
ViewState["CreateButton"] = value;
}
}
override void public CreateChildControls ()
{
panel1.Controls.Clear ();
if (CreateButton)
{
Button btn = new Button();
btn.Text = "Test button";
btn.ID = "CreatedButton"; // Note the ID here...
Panel1.Controls.Add(btn);
btn.Click += new EventHandler(btn_Click);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
CreateButton = true;
EnsureChildControls ();
}
void btn_Click(object sender, EventArgs e)
{
Response.Write("<script>alert('test')</script>");
}
Нечто подобное должно работать на вас ...