我创建按钮控件并放置在面板中但不起作用?
protected void Button1_Click(object sender, EventArgs e)
{
Button btn = new Button();
btn.Text = "Test button";
Panel1.Controls.Add(btn);
btn.Click += new EventHandler(btn_Click);
}
void btn_Click(object sender, EventArgs e)
{
Response.Write("<script>alert('test')</script>");
}
答案 0 :(得分:1)
当您向页面动态添加控件时,必须在任何后续请求(回发)上重新添加它们。您在Button1_OnClick中添加的按钮不会在后续请求中自动重新创建(例如在回发中)。
关于这个主题有很多类似的问题,你可以在那里找到细节。例如,使用以下搜索:
答案 1 :(得分:0)
确保为按钮指定一个ID,并确保每次创建它时都相同。
在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>");
}
这样的事情对你有用......