1

我的设置如下: 在 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 的 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 事件也不会触发。我在函数的开头尝试了一个断点,它根本没有触发。

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

4

1 回答 1

2

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

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

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

于 2012-06-04T21:46:52.903 回答