我有一个下拉列表对象在我的网页。当我单击它并选择一个不同的值时,什么也没有发生,即使我有一个连接到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浏览器和ie 8浏览器上尝试了这个功能。这是从Windows Server 2003 R2机器上提供的,运行ASP。NET和。NET框架版本4。


当前回答

你可以直接在下拉列表控件的SelectedIndexChanged事件中写,而不是像你写的那样。

protected void ddlleavetype_SelectedIndexChanged(object sender, EventArgs e)
{
 //code goes here
}

其他回答

尝试在下拉列表中设置AutoPostBack="True"。

还要确保页面是有效的。 你可以在浏览器开发工具(F12)中检查这一点。

在Console选项卡中选择正确的目标/帧并检查[Page_IsValid]属性

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

设置下拉列表AutoPostBack属性为true。

Eg:

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

我知道这篇文章有点老,但我仍然想对上面的答案进行一些补充。

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

你可以直接在下拉列表控件的SelectedIndexChanged事件中写,而不是像你写的那样。

protected void ddlleavetype_SelectedIndexChanged(object sender, EventArgs e)
{
 //code goes here
}