ENTER按键上的DropDownList回发未触发服务器端事件

Bul*_*nes 1 c# asp.net postback

问候!

我有一个简单的导航菜单,其中包含一个asp:DropDownList和一个asp:Button。用户从下拉菜单中选择一个项目,然后单击按钮以转到新的URL。我希望能够在用户选择下拉列表项时按ENTER键时提供支持,以便复制用户的行为,就像单击按钮一样。

到目前为止,这是我所拥有的:

<asp:DropDownList ID="ddlMenu"
                  runat="server"
                  onkeypress="if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {__doPostBack('GoButton',''); return false;}" />

<asp:Button ID="btnGoButton" runat="server" onclick="GoButton_Click"/>
Run Code Online (Sandbox Code Playgroud)

该按钮的点击代码为:

protected void GoButton_Click(object sender, EventArgs e)
{
    string l_url = ddlMenu.SelectedItem.Value;
    Response.Redirect(l_url);
}
Run Code Online (Sandbox Code Playgroud)

但是,每次我按ENTER键时,页面都会回发,但是按钮的客户端事件处理程序不会触发。我想念什么吗?

ben*_*wey 5

您是否尝试过使用默认按钮将控件包装在面板中?我知道它适用于文本框

<asp:Panel runat="server" id="searchPanel" DefaultButton="btnGoButton">
    <asp:DropDownList ID="ddlMenu" runat="server" />
    <asp:Button ID="btnGoButton" runat="server" onclick="GoButton_Click"/>
</asp:Panel>
Run Code Online (Sandbox Code Playgroud)