Событие DropDownList SelectedIndexChanged не срабатывает

У меня есть объект 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.

Если кто-то может помочь, это будет здорово.

Ответ 1

Установите свойство DropDownList AutoPostBack в значение true.

Например:

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

Ответ 2

попробуйте установить AutoPostBack="True" в DropDownList.

Ответ 3

Я знаю его бит старше поста, но все же я хотел бы добавить что-то к вышеприведенным ответам.

Там может быть какая-то ситуация, в которой значение "" более чем одного элемента в раскрывающемся списке дублируется/одинаково. Поэтому убедитесь, что у вас нет повторяющихся значений в элементах списка, чтобы инициировать это событие onselectedindexchanged

Ответ 4

Добавить недвижимость ViewStateMode="Enabled" и EnableViewState="true" И AutoPostBack="true" в капле DropDownList

Ответ 5

Также убедитесь, что страница действительна. Вы можете проверить это в инструментах разработчика браузеров (F12)

На вкладке Консоль выберите правильный Target/Frame и проверьте свойство [Page_IsValid]

Если страница недействительна, форма не будет отправляться и, следовательно, не запускать событие.

Ответ 6

Для меня ответ был атрибутом страницы 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>

Ответ 7

insted того, что вы написали код, вы можете записать его непосредственно в событии SelectedIndexChanged элемента управления выпадающего списка, например.

protected void ddlleavetype_SelectedIndexChanged(object sender, EventArgs e)
{
***************
***********
****
}

Ответ 8

У меня недавно была такая же проблема. Я также динамически заполнял свой dropdownlist и пробовал все, включая настройку AutoPostBack = true на контроле. Оказывается, это известная ошибка, которую можно устранить, сделав индекс 0 фиктивным элементом, например "Выбрать человека". Проверьте сообщение здесь:

https://forums.asp.net/t/1275349.aspx?Dropdownlist+not+firing+SelectedIndexChanged+on+first+item+with+autopostback+true

  Это решило мою проблему.