1

我需要触发动态创建的下拉列表的 Selectedindexchanged 事件。我在 aspx 页面中没有代码。所有代码都在代码隐藏中。

DropDownList objdropDown = new DropDownList();
objdropDown.EnableViewState = true;
objdropDown.AutoPostBack = true;                                
//objdropDown.AutoPostBack = true;
//objdropDown.SelectedIndexChanged += new EventHandler(objdropDown_SelectedIndexChanged);

protected void objdropDown_SelectedIndexChanged(object sender, EventArgs e)
{
    //My code here
}

选择随机项目 drom Dropdownlist 后,它会回发但下拉控件不可见。我在这里做错了什么?代码会很有帮助。谢谢!

4

4 回答 4

2

您需要在 pageInit 中创建下拉列表并尽早绑定事件。然后将知道能够参与回发过程并为 selectedindexchange 引发事件。

PageLoad 迟到了,因为回发处理已经发生。看看这个:http: //msdn.microsoft.com/en-us/library/ms178472.aspx

于 2011-09-21T13:29:02.737 回答
2

因为代码是在后面的代码中生成的,所以它不会在回发之间持久化,除非您每次都显式地重新创建它(可能在 Page_Load 中)。但是,您可能必须跟踪您选择的项目,并在每次回发后重新生成后将其设置为已选择。

于 2011-09-21T11:59:26.940 回答
0

您是否将新创建的 DropDownList 添加到页面上的父容器并将其可见性设置为可见?

于 2011-09-21T11:56:05.470 回答
0

我有同样的问题,只是想与其他人分享我的解决方案。请确保

  • 所有回传的下拉控件 ID 都是相同的(最好将其设置为安全起见)
  • 在 page_Init 事件中创建动态下拉列表。

我的问题与回发后更改的动态控件 ID 有关。在确保所有回发的控制 ID 相同后,我的问题得到解决。

于 2013-03-04T11:16:19.707 回答