111 messaggi dal 07 novembre 2007
Salve
all'interno di un controllo ho inserito due DDL di cui una dipende dall'altra. Quando carico la prima volta tutto và bene perchè quando seleziono la prima ddl la seconda si valorizza, mentre se riseleziono non viene effettuato il round-trip al server. Faccio presente che il tutto funziona senza updatePanel. Sapete spiegarmi il perchè?
Aspetto Vs suggerimenti
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao Mariano,

marianoross ha scritto:

se riseleziono non viene effettuato il round-trip al server.

E' strano perché se ha funzionato la prima volta, a rigor di logica, dovrebbe funzionare anche la seconda. Usa gli strumenti di sviluppo (tasto F12 su IE) oppure Firebug per verificare se effettivamente si verifica o meno un altro postback. Potrebbe darsi che dal secondo postback in poi, la DropDownList dipendente non si aggiorni e, dato che a video non cambia nulla, potresti avere l'illusione che il postback non si sta verificando.

Comunque ricontrolla di aver messo i due elementi chiave che servono a scatenare il postback parziale.
  • ChildrenAsTriggers="true" sull'UpdatePanel
  • AutoPostBack="true" sulla prima DropDownList


Configurato in questo modo dovrebbe funzionare, io infatti non riesco a riprodurre il problema. Ti posto un esempio minimale in cui la seconda DDL viene popolata in base al valore della prima.

Nella pagina aspx:
<asp:ScriptManager runat="server"></asp:ScriptManager>
<asp:UpdatePanel runat="server" ChildrenAsTriggers="true">
    <ContentTemplate>

        <asp:DropDownList ID="prima" runat="server" AutoPostBack="true" OnSelectedIndexChanged="PopolaSeconda">
            <asp:ListItem>1</asp:ListItem>
            <asp:ListItem>2</asp:ListItem>
            <asp:ListItem>3</asp:ListItem>
        </asp:DropDownList>

        <asp:DropDownList ID="seconda" runat="server">
        </asp:DropDownList>

    </ContentTemplate>
</asp:UpdatePanel>

Nel codefile metto la funzione che gestisce l'evento OnSelectedIndexChanged.
protected void PopolaSeconda(object sender, EventArgs e)
{
    seconda.Items.Clear();

    var numero = int.Parse(prima.SelectedValue);
    for (var i = 1; i <= numero; i++) {
        seconda.Items.Add("Voce " + i.ToString());
    }
    
}


Se non dovesse esserti di aiuto, posta il tuo codice, magari c'è qualcosa che impedisce alla seconda DropDownList di aggiornarsi.

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.