asp.net DropDownList的SelectedIndexChanged事件未激发

dsf9zpds  于 2023-08-08  发布在  .NET
关注(0)|答案(8)|浏览(228)

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

  1. <asp:DropDownList ID="logList" runat="server"
  2. onselectedindexchanged="itemSelected">
  3. </asp:DropDownList>

字符串
这就是那个函数itemSelected

  1. protected void itemSelected(object sender, EventArgs e)
  2. {
  3. Response.Write("Getting clicked; " + sender.GetType().ToString());
  4. FileInfo selectedfile;
  5. Response.Write("<script>alert('Hello')</script>");
  6. foreach (FileInfo file in logs)
  7. {
  8. if (file.Name == logList.Items[logList.SelectedIndex].Text)
  9. {
  10. Response.Write("<script>alert('Hello')</script>");
  11. }
  12. }
  13. }


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

uoifb46i

uoifb46i1#

将DropDownList AutoPostBack属性设置为true。
例如:

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

字符串

3yhwsihp

3yhwsihp2#

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

ru9i0ody

ru9i0ody3#

我知道它有点老的职位,但我仍然想添加一些上面的答案。
在中,可能会出现下拉列表中多个项目的“value”重复/相同的情况。因此,请确保列表项中没有重复的值来触发此“onselectedindexchanged”事件

1wnzp6jl

1wnzp6jl4#

在下拉列表中添加属性ViewStateMode="Enabled"EnableViewState="true"以及AutoPostBack="true"

jecbmhm3

jecbmhm35#

同时确保页面有效。您可以在浏览器开发者工具(F12)中检查这一点。
在Console选项卡中,选择正确的Target/Frame并检查[Page_IsValid]属性
如果页面无效,表单将不会提交,因此不会触发事件。

t5zmwmid

t5zmwmid6#

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

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

字符串
这是我的更新面板的结构

  1. <div>
  2. <asp:UpdatePanel ID="updt" runat="server">
  3. <ContentTemplate>
  4. <asp:DropDownList ID="id" runat="server" AutoPostBack="true" onselectedindexchanged="your server side function" />
  5. </ContentTemplate>
  6. </asp:UpdatePanel>
  7. </div>

展开查看全部
bis0qfac

bis0qfac7#

您可以直接在下拉列表控件的SelectedIndexChanged事件中写入它,而不是您已经写入的内容,例如。

  1. protected void ddlleavetype_SelectedIndexChanged(object sender, EventArgs e)
  2. {
  3. //code goes here
  4. }

字符串

rqqzpn5f

rqqzpn5f8#

在我的例子中,这个问题与组合框的值字段中的文本有关,如果文本包含像“\r\n”这样的特殊字符,则不会触发SelectedIndexChanged事件,因为一旦页面被编译,创建的JavaScript将失败。

相关问题