Событие DropDownList's SelectedIndexChanged не запускается - PullRequest
181 голосов
/ 05 февраля 2011

У меня есть объект 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 никогда не запускается.Я пробовал это в последней версии Firefox 3.6, а также в Internet Explorer 8. Он обслуживается с компьютера под управлением Windows Server 2003 R2 с ASP.Net с версией .NET Framework 4.

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

Ответы [ 7 ]

372 голосов
/ 05 февраля 2011

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

Например:

<asp:DropDownList ID="logList" runat="server" AutoPostBack="True" 
        onselectedindexchanged="itemSelected">
    </asp:DropDownList>
76 голосов
/ 05 февраля 2011

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

41 голосов
/ 07 марта 2012

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

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

12 голосов
/ 10 октября 2013

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

5 голосов
/ 24 октября 2016

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

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

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

2 голосов
/ 26 июля 2016

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

в дополнение к написанному вами коду вы можете написать его непосредственно в событии SelectedIndexChanged элемента управления dropdownlist, например,

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