选定的索引不会改变

时间:2013-11-12 09:49:12

标签: c# html select

我有一个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
}

3 个答案:

答案 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);
    }