1

我有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没有被触发。
谁能帮我解决这个问题?
提前致谢。

4

3 回答 3

1

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

例子:

-> MyEvent 触发。-> 下拉菜单创建。-> 指定的事件处理程序。-> 索引更改事件触发。页面重新加载。未找到下拉菜单,无法触发。

因此,您必须ensure that the drop-down is created before尝试 .NET 来处理该事件。

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

于 2012-11-21T09:00:27.943 回答
1

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

我的问题是,当我更改下拉列表的选定索引时,事件 SelectedIndexChanged 没有被触发。

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

于 2012-11-21T09:01:55.773 回答
0

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

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

于 2012-11-21T08:55:33.097 回答