3

我有一个带有 onSelectedIndexChanged 事件的 ASP.NET DropDownList 控件。我也有许多人说可以解决问题的 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
}
4

3 回答 3

2

这可能是由于在 Page_Load 方法中绑定了您的下拉列表造成的。请用

if(!IsPostBack){
// data binding.
}

希望,有帮助!

于 2013-11-12T10:01:06.320 回答
1
AutoPostBack="true"

也许你错过了这个选项......

于 2013-11-12T09:54:24.930 回答
0

您的代码工作正常,代码中可能有一些东西会改变实现。我已经调试了您的代码,它在输出窗口中显示了选定的项目。请验证是否有一些 javascript 代码导致调用下拉 selectedIndexChanged 事件的问题。

  protected void Select1_SomethingChange(object sender, EventArgs e)
    {
        DropDownList ddl = (DropDownList)sender;
        Debug.WriteLine(ddl.SelectedItem.Text);
    }
于 2013-11-12T13:11:29.817 回答