ASP.NET C#:下拉列表选定索引已更改事件未触发

本文关键字:事件 索引 NET 下拉列表 ASP | 更新日期: 2023-09-27 18:36:19

我的设置如下:在 PageLoad 事件中,我初始化一个下拉列表,如下所示:

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 的 DropDownList:

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 事件永远不会触发,即使页面会回发也是如此。我在函数开始时尝试了一个断点,但它根本没有触发。

是否有某种原因导致我无法将事件绑定到另一个事件触发中的对象?

ASP.NET C#:下拉列表选定索引已更改事件未触发

简短的回答是,当触发ChooseSODropDown时,将更多的事件处理程序绑定到现有控件为时已晚。 这是因为控件的先前状态是从 OnLoad 中的视图状态反序列化的,并且该初始状态用于触发要触发的 onchange 事件。

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

我建议阅读页面生命周期,以准确了解事件的处理方式。