以编程方式添加的Click事件不会触发

时间:2013-05-06 10:00:34

标签: c# asp.net events

我有一个aspx页面来搜索数据库中的内容。 我想把结果放在一个我以编程方式生成的表中,我想要一个按钮来下载数据。

代码用于生成按钮

TableCell download = new TableCell();
LinkButton downloadBt = new LinkButton();
downloadBt.Text = "Télécharger";
downloadBt.Click += new EventHandler(DownloadConstat);
download.Controls.Add(downloadBt);
tr.Controls.Add(download);

用户点击按钮时执行的方法

protected void DownloadConstat(object sender, EventArgs e)
{
    Debug.WriteLine("download");
}

问题是单击按钮时不会调用该方法。

2 个答案:

答案 0 :(得分:2)

您必须在LoadComplete的{​​{1}}事件之前添加按钮并指定ist事件处理程序。
ASP.NET页面的生命周期决定了如何以及何时添加动态控件。

请参阅ASP.NET-Page-LifeCycle

答案 1 :(得分:0)

在创建动态控件之前,最好经历页面生命周期。您遇到的问题是因为在加载事件中,动态创建的控件会丢失。因此,要使这些控件可用于必须在page_init事件中重建它们,以便它们在加载事件期间可用。