44 messaggi dal 20 maggio 2003
Ciao a tutti. Mi sapete dire quale sia la strada corretta per aggiungere una DropDownList a Runtime ?. Dopo averla creata nell'evento onInit è meglio aggiungerla alla pagina e poi popolarla oppure popolarla prima di aggiungerla alla pagina ? Mi pare di capire che aggiungerla prima alla pagina mi conserva i valori e non devo ri-popolarla dopo. Corretto ?
Grazie
11.872 messaggi dal 09 febbraio 2002
Contributi
Ciao,


è meglio aggiungerla alla pagina e poi popolarla oppure popolarla prima di aggiungerla alla pagina

E' indifferente; si tratta sempre dello stesso oggetto in memoria.


Mi pare di capire che aggiungerla prima alla pagina mi conserva i valori e non devo ri-popolarla dopo. Corretto ?

No, se l'avevi aggiunta a runtime devi sempre ri-crearla, ri-aggiungerla e ri-popolarla.
Leggi questa discussione, forse può aiutarti.
http://forum.aspitalia.com/forum/post/385463/Creare-Oggetti-Runtime-Mantenerli-Postabck-.aspx

In caso negativo, spiega meglio il tuo scenario oppure, per dare un po' di contesto, posta i link agli articoli che hai trovato sul web.

ciao,
Moreno

Enjoy learning and just keep making
44 messaggi dal 20 maggio 2003
Ti ringrazio della risposta. Perdonami ma non mi torna una cosa.
Io ho semplicemente creato una pagina con una semplice DropList. Se creo la droplist, la aggiungo alla pagina e poi la popolo al postback devo solo ri-crearla (stesso id) e ri-aggiungerla. Le voci all'interno me le trovo come se venissero in qualche modo salvate nella pagina e non nel controllo stesso. Mentre se creo la droplist, la popolo e poi la aggiungo allora devo ripetere tutti i passi dopo il postback perché le voci non le ritrovo. Volevo solo capire le differenze...
11.872 messaggi dal 09 febbraio 2002
Contributi
Ho riprodotto il tuo esempio, hai ragione. E' la prima volta che mi capitava di vederlo.

jjlotus ha scritto:

Le voci all'interno me le trovo come se venissero in qualche modo salvate nella pagina e non nel controllo stesso

Sì, è giusto. Ciascun ListItem indica individualmente come vuole essere salvato nel ViewState, come vedi in questa riga di codice:
https://github.com/Microsoft/referencesource/blob/master/System.Web/UI/WebControls/listitem.cs#L316

Il problema è che il salvataggio avviene solo se il ListItem reputa sé stesso come "Dirty", ovvero se almeno una delle sue proprietà è stata impostata quando il tracciamento nel ViewState era attivo.
https://github.com/Microsoft/referencesource/blob/master/System.Web/UI/WebControls/listitem.cs#L184

jjlotus ha scritto:

Mi sapete dire quale sia la strada corretta per aggiungere una DropDownList a Runtime ?.

Alla luce di questo, decidi tu se è più conveniente per te ripopolare i ListItem ad ogni postback e, in tal caso, tanto vale essere espliciti nel disabilitare il ViewState per la DropDownList.
protected void Page_Init(object sender, EventArgs e)
{
    var ddl = new DropDownList();
    ddl.ID = "miaddl";
    //Disabilito il viewstate
    ddl.EnableViewState = false;
    Page.Form.Controls.Add(ddl);
    ddl.Items.Add(new ListItem("uno", "1"));
    ddl.Items.Add(new ListItem("due", "2"));
    ddl.Items.Add(new ListItem("tre", "3"));
}


Oppure se preferisci che i ListItem vengano salvati nel ViewState, consapevole che sei hai qualche decina o centinaia di elementi, questi andranno a gonfiare il peso della pagina aspx e dovranno essere reinviati dal client ad ogni postback.
protected void Page_Init(object sender, EventArgs e)
{
    var ddl = new DropDownList();
    ddl.ID = "miaddl";
    Page.Form.Controls.Add(ddl);
    if (!Page.IsPostBack)
    {
        ddl.Items.Add(new ListItem("uno", "1"));
        ddl.Items.Add(new ListItem("due", "2"));
        ddl.Items.Add(new ListItem("tre", "3"));
    }
}


ciao,
Moreno
Modificato da BrightSoul il 01 maggio 2016 23.32 -

Enjoy learning and just keep making
44 messaggi dal 20 maggio 2003
Perfetto, ora mi è tutto più chiaro.
Ti ringrazio

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.