根据下面的代码,它似乎不起作用。我可以在 Page_Load 之后动态地将控件添加到页面,但我无法将 EventHandler 连接到它。
这是我的代码隐藏:
public partial class AddingControlsToPanelAtRuntime : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DrawPage();
}
private void DrawPage()
{
Label label;
label = new Label();
label.ID = "Label1";
label.Text = "Label 1";
Panel1.Controls.Add(label);
Panel1.Controls.Add(new LiteralControl("<br />"));
label = new Label();
label.ID = "Label2";
label.Text = "Label 2";
Panel1.Controls.Add(label);
Panel1.Controls.Add(new LiteralControl("<br />"));
LinkButton linkButton1 = new LinkButton();
linkButton1.ID = "linkButton1";
linkButton1.Text = "linkButton 1";
linkButton1.Click += new EventHandler(LinkButton_Click);
Panel1.Controls.Add(linkButton1);
Panel1.Controls.Add(new LiteralControl("<br />"));
LinkButton linkButton2 = new LinkButton();
linkButton2.ID = "linkButton2";
linkButton2.Text = "linkButton 2";
linkButton2.Click += new EventHandler(LinkButton_Click);
Panel1.Controls.Add(linkButton2);
}
protected void LinkButton_Click(object sender, EventArgs e)
{
Panel1.Controls.Add(new LiteralControl("<p>"));
LinkButton linkButton4 = new LinkButton();
linkButton4.ID = "linkButton4";
linkButton4.Text = "linkButton 4";
linkButton4.Click += new EventHandler(LinkButton_Click);
Panel1.Controls.Add(linkButton4);
}
}
因此,在从 Page_Load 调用的 DrawPage() 中,所有控件都很好地添加到了面板中,并且事件处理程序完美地连接起来。
当我单击 LinkButton1 或 LinkButton2 时,它们会正确调用 LinkButton_Click()。在 LinkButton_Click() 中,我在运行时添加了另一个控件并连接了 EventHandler,但是当我点击该链接按钮时,它只回发到 Page_Load 而不会调用 LinkButton_Click()。
那么,基于 ASP.NET 管道,我在这里尝试做的事情是不可能的吗?