2013-02-07 37 views
0

我使用asp.net和c#for 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 = ""; 
} 
+0

MainPanel.Controls.Add(cmb);应该是MainPanel.Controls.Add(nuevoCmb); –

回答

0

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

+0

我创建动态控件每次页面重新加载在Page_Init事件像建议微软,但envent没有解雇。 – omixam

+0

@ user1991662,发布您调用创建组合框的代码的整个方法。 – Josh

0

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

+0

既不使用Init,也不使用PreInit事件控件触发OnselecteIndexChanged事件。 – omixam