【问题标题】:ASP.NET C#: DropDownList SelectedIndexChanged Event Not FIringASP.NET C#:DropDownList SelectedIndexChanged 事件未触发
【发布时间】:2012-06-04 21:34:38
【问题描述】:

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

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

【问题讨论】:

  • @Mike Christensen - 你比我早了几秒钟到达那个链接。如果你想发布答案,我会从你第一次删除我的。
  • @DavidStratton - 嘿,好的。我希望有人能写一个更详细的答案(我已经几年没有做过任何 ASP.NET 开发了,所以这对我来说有点朦胧,我只记得这些东西有点令人困惑).. 我说保持你的回答虽然,它肯定是有价值的。

标签: c# asp.net drop-down-menu


【解决方案1】:

简短的回答是,当ChooseSODropDown 被触发时,再将任何事件处理程序绑定到现有控件已经太迟了。这是因为控件的先前状态是从 OnLoad 中的 viewstate 反序列化的,并且该初始状态用于触发 onchange 事件以被解雇。

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

我建议阅读Page Lifecycle 以了解事件的处理方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    相关资源
    最近更新 更多