208

我的网页中有一个 DropDownList 对象。当我点击它并选择一个不同的值时,什么也没有发生,即使我有一个连接到SelectedIndexChanged事件的函数。

首先,实际对象的 HTML 代码:

<asp:DropDownList ID="logList" runat="server" 
       onselectedindexchanged="itemSelected">
</asp:DropDownList>

这就是那个功能,itemSelected

protected void itemSelected(object sender, EventArgs e)
{
    Response.Write("Getting clicked; " + sender.GetType().ToString());
    FileInfo selectedfile;
    Response.Write("<script>alert('Hello')</script>");
    foreach (FileInfo file in logs)
    {
        if (file.Name == logList.Items[logList.SelectedIndex].Text)
        {
            Response.Write("<script>alert('Hello')</script>");
        }
    }
}

没有任何响应出现,并且 JavaScript 的那部分永远不会运行。我已经在最新的 3.6 版本的 Firefox 以及 Internet Explorer 8 上进行了尝试。这是由 Windows Server 2003 R2 机器提供的,运行 ASP.NET 和 .NET Framework 版本 4。

4

7 回答 7

429

将 DropDownListAutoPostBack属性设置为 true。

例如:

<asp:DropDownList ID="logList" runat="server" AutoPostBack="True" 
        onselectedindexchanged="itemSelected">
    </asp:DropDownList>
于 2011-02-05T06:06:51.460 回答
82

尝试AutoPostBack="True"在 DropDownList 上设置。

于 2011-02-05T06:05:22.227 回答
45

我知道它有点旧的帖子,但我仍然想在上面的答案中添加一些东西。

在某些情况下,下拉列表中多个项目的“值”重复/相同。因此,请确保列表项中没有重复值以触发此“ onselectedindexchanged ”事件

于 2012-03-07T14:22:24.623 回答
12

添加属性ViewStateMode="Enabled"EnableViewState="true"AutoPostBack="true"下拉 DropDownList

于 2013-10-10T10:41:43.473 回答
4

还要确保页面有效。您可以在浏览器开发者工具 (F12) 中查看

在控制台选项卡中选择正确的目标/框架并检查 [Page_IsValid] 属性

如果页面无效,表单将不会提交,因此不会触发事件。

于 2016-10-24T12:04:41.270 回答
3

对我来说,答案是 aspx 页面属性,我将 Async="true" 添加到页面属性中,这解决了我的问题。

<%@ Page Language="C#" MasterPageFile="~/MasterPage/Reports.Master"..... 
    AutoEventWireup="true" Async="true" %>

这是我的更新面板的结构

<div>
  <asp:UpdatePanel ID="updt" runat="server">
    <ContentTemplate>

      <asp:DropDownList ID="id" runat="server" AutoPostBack="true"        onselectedindexchanged="your server side function" />

   </ContentTemplate>
  </asp:UpdatePanel>
</div>
于 2016-07-26T17:45:45.473 回答
1

而不是你写的,你可以直接写在下拉列表控件的 SelectedIndexChanged 事件中,例如

protected void ddlleavetype_SelectedIndexChanged(object sender, EventArgs e)
{
 //code goes here
}
于 2013-07-02T05:30:54.137 回答