Ответ 1
Установите свойство DropDownList AutoPostBack
в значение true.
Например:
<asp:DropDownList ID="logList" runat="server" AutoPostBack="True"
onselectedindexchanged="itemSelected">
</asp:DropDownList>
У меня есть объект 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.
Если кто-то может помочь, это будет здорово.
Установите свойство DropDownList AutoPostBack
в значение true.
Например:
<asp:DropDownList ID="logList" runat="server" AutoPostBack="True"
onselectedindexchanged="itemSelected">
</asp:DropDownList>
попробуйте установить AutoPostBack="True"
в DropDownList.
Я знаю его бит старше поста, но все же я хотел бы добавить что-то к вышеприведенным ответам.
Там может быть какая-то ситуация, в которой значение "" более чем одного элемента в раскрывающемся списке дублируется/одинаково. Поэтому убедитесь, что у вас нет повторяющихся значений в элементах списка, чтобы инициировать это событие onselectedindexchanged
Добавить недвижимость ViewStateMode="Enabled"
и EnableViewState="true"
И AutoPostBack="true"
в капле DropDownList
Также убедитесь, что страница действительна. Вы можете проверить это в инструментах разработчика браузеров (F12)
На вкладке Консоль выберите правильный Target/Frame и проверьте свойство [Page_IsValid]
Если страница недействительна, форма не будет отправляться и, следовательно, не запускать событие.
Для меня ответ был атрибутом страницы 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>
insted того, что вы написали код, вы можете записать его непосредственно в событии SelectedIndexChanged элемента управления выпадающего списка, например.
protected void ddlleavetype_SelectedIndexChanged(object sender, EventArgs e)
{
***************
***********
****
}
У меня недавно была такая же проблема. Я также динамически заполнял свой dropdownlist
и пробовал все, включая настройку AutoPostBack = true
на контроле. Оказывается, это известная ошибка, которую можно устранить, сделав индекс 0 фиктивным элементом, например "Выбрать человека". Проверьте сообщение здесь:
Это решило мою проблему.