Question

J'ai un objet DropdownList dans ma page Web. Lorsque je clique dessus et sélectionnez une valeur différente, rien ne se passe, même si j'ai une fonction câblée jusqu'au SelectedIndexChanged un événement. Je vais essayer de publier mon code ici aussi ordonné que possible:

Tout d'abord, le code HTML de l'objet réel:

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

Et c'est cette fonction, 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>");
        }
    }
}

Aucune des réponses n'apparaît et cette partie de JavaScript n'est jamais exécutée. J'ai essayé cela sur la dernière version 3.6 de Firefox, ainsi que sur Internet Explorer 8. Ceci est servi à partir d'une machine Windows Server 2003 R2, exécutant ASP.NET avec le .NET Framework version 4.

Si quelqu'un peut aider, ce serait génial.

Était-ce utile?

La solution

Définir DropDownlist AutoPostBack propriété à vrai.

Par exemple:

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

Autres conseils

Essayez de régler AutoPostBack="True" sur la liste déroulante.

Je sais que son post plus ancien, mais je voudrais quand même ajouter quelque chose aux réponses ci-dessus.

Il pourrait y avoir une situation où dans, le "évaluer"De plusieurs éléments dans la liste déroulante sont dupliqués / identiques. Alors, assurez-vous que vous n'avez pas de valeurs répétées dans les éléments de la liste pour déclencher cela"onselectedIndexchanged" un événement

Ajouter une propriété ViewStateMode="Enabled" et EnableViewState="true"Et AutoPostBack="true" Dans Drop Dropdownlist

Assurez-vous également que la page est valide. Vous pouvez vérifier cela dans les outils de développeur de navigateurs (F12)

Dans l'onglet Console, sélectionnez la cible / trame correct et vérifiez la propriété [page_isvalid

Si la page n'est pas valide, le formulaire ne se soumet pas et ne licenciera donc pas l'événement.

Pour moi, la réponse était ASPX Page Attribut, j'ai ajouté Async = "true" aux attributs de page et cela a résolu mon problème.

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

Ceci est la structure de mon panneau de mise à jour

<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>

INDET de ce que vous avez écrit du code, vous pouvez l'écrire directement dans l'événement SelectedIndexchanged du contrôle de liste de dropdown, par exemple

protected void ddlleavetype_SelectedIndexChanged(object sender, EventArgs e)
{
***************
***********
****
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top