我的情况是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>
答案 0 :(得分:0)
当您在回发上重新打包DropDownList时,通常会发生这种情况。这会使任何选择无效。在您的情况下,可能是正在重新创建ascx控件。您是否使用LoadControl(...)加载用户控件?