ASP.NET DropDownList控件无法在UserControl内正确回发

时间:2010-04-30 15:11:58

标签: asp.net

我的情况是DropDownList控件没有正确回发。 AutoPost属性设置为true,因此回发确实发生,但SelectedValue未设置为正确的值。此外,onSelectedIndexChanged事件不会触发。完全相同的代码在ASPX页面上工作得很好,但在ASCX控件中不起作用。

我已经尝试过所有明显的事情,我希望,试图找出这个,但到目前为止没有运气。我甚至调查了Request.Form["__EVENTTARGET"]__EVENTARGUMENT中的内容。 __EVENTTARGET确实指向下拉列表,但参数为空。

StackOverflow的人可以帮助我找到正确的方向来调试此问题。当然,由于母版页和ASP.NET常见的过度复杂化,它更加复杂。这是代码:

<div>
    <asp:DropDownList ID="testDrop" runat="server" AutoPostBack="true" 
        EnableViewState="true" onselectedindexchanged="testDrop_SelectedIndexChanged">
    <asp:ListItem Value="1" Text="1">1</asp:ListItem>
    <asp:ListItem Value="2" Text="2">2</asp:ListItem>
    </asp:DropDownList>
</div>

这是生成的html:

<select id="ctl00_MainContent_rptAccordion_ctl00_statControl_testDrop" onchange="javascript:setTimeout('__doPostBack(\'ctl00$MainContent$rptAccordion$ctl00$statControl$testDrop\',\'\')', 0)" name="ctl00$MainContent$rptAccordion$ctl00$statControl$testDrop">
    <option value="1" selected="selected">1</option>
    <option value="2">2</option>
</select>

1 个答案:

答案 0 :(得分:0)

当您在回发上重新打包DropDownList时,通常会发生这种情况。这会使任何选择无效。在您的情况下,可能是正在重新创建ascx控件。您是否使用LoadControl(...)加载用户控件?