动态加载的dropdownlist控件不会触发SelectedIndexChanged事件

时间:2012-11-21 08:36:50

标签: asp.net

我已将控件dropdownlist加载到RadGrid的模板列中 在加载时,我为AutoPostBack='True'设置了dropdownlist,并创建了事件SelectedIndexChanged

 DropDownList ddlConditions = new DropDownList(); 
 ddlConditions.ID = "ddl" + name;
 ddlConditions.AutoPostBack = true;
 ddlConditions.SelectedIndexChanged += new EventHandler(ddlConditions_SelectedIndexChanged);

我的问题是,当我更改选定的dropdownlist索引时,事件SelectedIndexChanged未被触发。
任何人都可以帮我解决这个问题吗? 提前谢谢。

3 个答案:

答案 0 :(得分:1)

通常由page life cycle problem引起。当您的索引更改事件Dropdownlist触发时,控件不存在以将其绑定在回发上。

示例:

- > MyEvent发射。 - >下拉创建。 - >事件处理程序指定。 - >已触发索引更改事件。页面重新加载。没有找到下拉,无法开火。

所以你必须ensure that the drop-down is created before .NET尝试处理这个事件。

有关此类问题和生命周期的更多信息,请参阅此answer

答案 1 :(得分:1)

我建议您检查您创建 DropDownList 的位置。应在 OnInit 或至少在 OnLoad 上添加动态控件。在OnLoad完成执行后,ASP.NET开始处理控件的事件和值。

  

我的问题是当我更改所选的下拉列表索引时   事件SelectedIndexChanged未被触发。

答案:,因为您在处理完事件后创建了DropDownList。

答案 2 :(得分:0)

页面是否回发?如果是这样,您需要确保在每次回发时都在页面上重新创建控件。

如果它在通常的if(!IsPostBack)块内,则将其放在外面 - 通常,在page_init中创建控件也是谨慎的,但这可能取决于您的具体设置。