我有一个ASP.NET DropDownList控件,带有onSelectedIndexChanged事件。我也有AutoPostBack =“true”,许多人说会解决这个问题。但是我认为这不是问题的所在......我的Html代码和C#代码在下面供参考。问题是代码有效,但只有当我在编辑下拉框时按下回车键。如果我只是单击下拉列表中的对象,则事件将不会触发。如果我更改所选项目,使下拉列表中的“选定”文本显示为“ASP”,然后我使用浏览器检查元素,我看到ListItem的Selected =“True”部分仍然在第一个项目上。它没有改变。它使用回车键更改,但不会通过鼠标单击更改。欢迎任何帮助,非常感谢。
HTML:
<div class="ui-widget">
<asp:DropDownList id="Select1" OnSelectedIndexChanged="Select1_SomethingChange" runat="server" AutoPostBack="true">
<asp:ListItem Selected="True" Value="White"> White </asp:ListItem>
<asp:ListItem Value="Select one...">Select one...</asp:ListItem>
<asp:ListItem Value="ActionScript">ActionScript</asp:ListItem>
<asp:ListItem Value="AppleScript">AppleScript</asp:ListItem>
<asp:ListItem Value="Asp">Asp</asp:ListItem>
<asp:ListItem Value="BASIC">BASIC</asp:ListItem>
</asp:DropDownList>
</div>
C#:
protected void Select1_SomethingChange(object sender, EventArgs e)
{
//something is meant to happen here
}
答案 0 :(得分:1)
AutoPostBack="true"
也许你错过了这个选项......
答案 1 :(得分:1)
这可能是由于在Page_Load方法中绑定下拉列表的数据引起的。 请用
包围它(数据绑定)if(!IsPostBack){
// data binding.
}
希望,它有所帮助!
答案 2 :(得分:0)
您的代码运行正常,代码中可能存在更改实现的内容。我调试了你的代码,它在输出窗口中显示了所选的项目。请验证是否有一些javascript代码导致调用dropdown selectedIndexChanged事件。
protected void Select1_SomethingChange(object sender, EventArgs e)
{
DropDownList ddl = (DropDownList)sender;
Debug.WriteLine(ddl.SelectedItem.Text);
}