C# 添加事件以控制添加的动态

C# 添加事件以控制添加的动态,c#,asp.net,C#,Asp.net,我正在使用asp.net和c#作为webForm。我正在动态生成dropDownList,但无法为此控件执行事件。下面是一些代码: DropDownList nuevoCmb = new DropDownList(); nuevoCmb.ID = "ddl" + num; nuevoCmb.Items.Add("---Seleccione el Plazo---"); nuevoCmb.Items.Add("Corto Plazo"); nuevoCmb.SelectedIndex = 0; n

我正在使用asp.net和c#作为webForm。我正在动态生成dropDownList,但无法为此控件执行事件。下面是一些代码:

DropDownList nuevoCmb = new DropDownList();
nuevoCmb.ID = "ddl" + num;
nuevoCmb.Items.Add("---Seleccione el Plazo---");
nuevoCmb.Items.Add("Corto Plazo");
nuevoCmb.SelectedIndex = 0;
nuevoCmb.AutoPostBack = true;
nuevoCmb.SelectedIndexChanged += new EventHandler(nuevoCmb_OnSelectedIndexChanged);
MainPanel.Controls.Add(nuevoCmb);

protected void nuevoCmb_OnSelectedIndexChanged(object sender, EventArgs e)
{
    string temp = "";
}

您需要将创建控件的代码添加到每个页面请求中,包括回发。如果该控件导致回发,并且未调用重新创建该控件的代码,则不会触发事件处理程序。NET将在页面加载期间添加具有相同ID的控件后最终调用事件处理程序。

您应该在页面
Init
事件中或之前添加动态添加的控件。如果在page
Load
事件期间添加,也可以使用此功能。加载事件后,自定义控件事件会弹出并触发。因此,如果要动态添加控件,则必须在每次回发时添加控件,最迟在页面
Load
事件结束之前加载它们。

我在以下页面中找到了答案:


此示例功能齐全,但只有一个asp html页面,无法使用母版页。任何建议

主面板。控件。添加(cmb);应该是MainPanel.Controls.Add(nuevoCmb);每次在page_Init事件(如Microsoft建议)中重新加载页面时,我都会创建动态控件,但envent尚未启动。@user1991662,在调用创建组合框的代码时发布整个方法。无论是使用Init还是PreInit事件,控件都不会启动OnselecteIndexChanged事件。