ASP.NET C#:DropDownList SelectedIndexChanged事件未触发

ASP.NET C#:DropDownList SelectedIndexChanged事件未触发,c#,asp.net,drop-down-menu,C#,Asp.net,Drop Down Menu,我的设置如下: 在PageLoad事件中,我初始化了dropDownList,如下所示: SONumList = new DropDownList(); SONumList.DataSource = SOList; SONumList.DataBind(); SONumList.Height = new Unit("19px"); SONumList.SelectedIndexChanged += (ChooseSODropDown); SONumList.AutoPostBack = true

我的设置如下: 在PageLoad事件中,我初始化了dropDownList,如下所示:

SONumList = new DropDownList();
SONumList.DataSource = SOList;
SONumList.DataBind();
SONumList.Height = new Unit("19px");
SONumList.SelectedIndexChanged += (ChooseSODropDown);
SONumList.AutoPostBack = true;
Panel1.Controls.Add(SONumList);
在更改SONumList上的SelectedIndex时触发的ChooseSODropDown事件中,我创建了另一个名为PNum的下拉列表:

PNumList = new DropDownList();
PNumList.DataSource = dataSource2;
PNumList.DataTextField = "Part";
PNumList.DataValueField = "Part";
PNumList.DataBind();
PNumList.Height = new Unit("19px");
PNumList.SelectedIndexChanged += ChoosePNumDropDown;
PNumList.AutoPostBack = true;
Panel1.Controls.Add(PNumList);
尽管PNum框本身显示正确,并且数据绑定正确,但ChoosePNumDropDown事件永远不会触发,即使页面没有回发。我在函数的开头尝试了一个断点,但根本没有触发


有什么原因导致我无法将事件绑定到另一个事件触发中的对象吗?

简单的回答是,在触发
ChooseSODropDown
时,将更多事件处理程序绑定到现有控件已经太晚了。这是因为控件的前一个状态是从OnLoad中的viewstate反序列化的,该初始状态用于触发onchange事件

我相信您必须在OnLoad中初始化所有控件,包括
的事件处理程序chooseNumDropDown
,并将所有必需的逻辑移到该事件处理程序中。据我所知,在现有事件处理程序中添加更多事件处理程序并期望在同一回发中触发它是不可能的


我建议您阅读中的内容,以了解事件的具体处理方式。

读得好:@Mike Christensen-您比我快了几秒钟到达该链接。如果你想发布答案,我会删除我的,因为你是第一个。@DavidStratton-Heh,好的。我希望有人能写一个更详细的答案(我已经有几年没有做过任何ASP.NET开发了,所以这对我来说有点模糊,我只记得这些东西有点让人困惑)。。我说保留你的答案,它当然是有价值的。