Domanda

Ho un oggetto DropDownList nella mia pagina web.Quando ci clicco sopra e seleziono un valore diverso, non succede nulla, anche se ho una funzione collegata all'evento SelectedIndexChanged.Cercherò di inserire il mio codice qui nel modo più ordinato possibile:

Innanzitutto, il codice HTML dell'oggetto effettivo:

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

E questa è quella funzione, 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>");
        }
    }
}

Nessuna delle risposte viene visualizzata e quella parte di JavaScript non viene mai eseguita.L'ho provato sull'ultima versione 3.6 di Firefox, nonché su Internet Explorer 8. Questo viene servito da una macchina Windows Server 2003 R2, che esegue ASP.Net con la versione .NET Framework 4.

Se qualcuno può aiutare, sarebbe fantastico.

È stato utile?

Soluzione

Imposta la proprietà AutoPostBack di DropDownList su true.

Ad esempio:

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

Altri suggerimenti

prova a impostare AutoPostBack="True" in DropDownList.

So che è un post un po 'più vecchio, ma vorrei comunque aggiungere qualcosa alle risposte sopra.

Potrebbe esserci qualche situazione in cui il " valore " di più di un elemento nell'elenco a discesa è duplicato / uguale.Quindi, assicurati di non avere valori ripetuti negli elementi dell'elenco per attivare questo evento " onselectedindexchanged "

Aggiungi proprietà ViewStateMode="Enabled" e EnableViewState="true" E AutoPostBack="true" nel drop DropDownList

Assicurati inoltre che la pagina sia valida. Puoi verificarlo negli strumenti per sviluppatori del browser (F12)

Nella scheda Console selezionare il Target / Frame corretto e controllare la proprietà [Page_IsValid]

Se la pagina non è valida, il modulo non verrà inviato e quindi non verrà attivato l'evento.

Per me la risposta era l'attributo della pagina aspx, ho aggiunto Async="true" agli attributi della pagina e questo ha risolto il mio problema.

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

Questa è la struttura del mio pannello di aggiornamento

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

al posto del codice che hai scritto puoi scriverlo direttamente nell'evento SelectedIndexChanged del controllo a tendina egp>

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top