Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Controlli aggiunti dinamicamente
martedì 22 maggio 2007 - 22.09
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
gigi90
Profilo
| Senior Member
285
messaggi | Data Invio:
mar 22 mag 2007 - 22:09
Ho la necessità di aggiungere controlli al click di un pulsante, quindi utilizzo il seguente codice:
btnAggiungi_Click(...){
Button btn=new Button();
btn.Text=txtTestoControllo.Text;
pnlControlli.Controls.Add(btn);
}
ed il controllo viene agiunto, ma quando faccio click su un pulsante di quelli generati dinamicamente oppure su un pulsante della pagina(dopo un postback) quelli generati dinamicamente scompaiono, io voglio che rimangano memorizzati
Come posso fare per non farli scomparire, mica è un problema di viewstate: cioè devo memorizzare il loro statoi nel viewstate.
PS: ho provato a settare la proprietà
btn.EnableViewState=true;
al controllo generato dinamicamente ma niente da fare!!
Wamba
Profilo
| Expert
722
messaggi | Data Invio:
mer 23 mag 2007 - 08:36
E' un problema dei controlli dinamici, il Viewstate non è in grado di mantenerli in memoria. Per risolvere il problema devi rigenerare la logica di caricamento ad ogni postback.
Se necessiti di query o algorittmi pesanti per generare i controlli dianamici puoi pensare di salvarti il risultato dell'elaborazione in campi hidden o nel viewstate e recuperare poi l'informazione per alleggerire la procedura (e non eseguire query inutili).
Ti consiglio quest'articolo è molto ben fatto:
http://weblogs.asp.net/infinitiesloop/archive/2006/08/25/TRULY-Understanding-Dynamic-Controls-_2800_Part-1_2900_.aspx
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
gigi90
Profilo
| Senior Member
285
messaggi | Data Invio:
mer 23 mag 2007 - 15:45
Siccome i controlli vengono generati al click di un pulsante, non esiste un modo per salvare il loro stato nel viewstate, in modo che essi vengano ripristinati automaticamente dal motore Asp.Net senza che li ridebba generare???
Wamba
Profilo
| Expert
722
messaggi | Data Invio:
mer 23 mag 2007 - 16:44
Leggi la terza parte dell'articolo non la ho ancora studiata, ma sembra rispondere al tuo problema
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
sankyu
Profilo
| Senior Member
266
messaggi | Data Invio:
gio 24 mag 2007 - 10:12
è piu incasinato del previsto per averli a tutti gli effetti come i controlli statici dovresti inserirli nel control tree che si genera nel preinit della pagina, infatti se noti anche in on-page-preinit i controlli statici sono gia disponibili cmq ti linko un sito dove poter scaricare un componente che ti facilita di gran lunga le cose!
http://www.denisbauer.com/ASPNETControls/DynamicControlsPlaceholder.aspx
riingraziamo tutti quest'uomo!!
Wamba
Profilo
| Expert
722
messaggi | Data Invio:
gio 24 mag 2007 - 11:08
Questo potrebbe essere veramente comodo. Fammi sapere come ti trovi.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
gigi90
Profilo
| Senior Member
285
messaggi | Data Invio:
gio 24 mag 2007 - 15:35
Il componente potrebbe essere molto utile poiche non fa scomparire i controlli, però c'è un problema: al postback i controlli rimangono nel dynamicControlsPlaceHolder, ma vengono resettate tutte le proprietà.
Ad esempio se inserisco con un ciclo for all'interno dei pulsanti nel modo seguente:
for (int i = 0; i <= 10; i++) {
Button b = new Button();
b.Text = i.ToString();
b.ID = i.ToString();
b.Height = 29;
b.Width = 55;
DynamicControlsPlaceholder1.Controls.Add(b);
}
quando effettuo un postback, i pulsanti rimangono, ma il loro testo viene azzerato e anche le dimensioni, come risolvo???
Wamba
Profilo
| Expert
722
messaggi | Data Invio:
gio 24 mag 2007 - 15:48
Premetto che non ho studiato il componente che hai postato, ma ho visto l'eesempio oonline. Li aggiunge una label e ad ogni post back mantiene il testo. Sei sicuro di non esserti perso nulla nella configurazione?
Ma vedendo come lo usi... non ti conveniva usare un repeter? Ti risolvi tutti i problemi legati agli oggetti dinamici.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
gigi90
Profilo
| Senior Member
285
messaggi | Data Invio:
gio 24 mag 2007 - 15:52
Il fatto è che sto sviluppando un applicazione ajax, e affinchè la richiesta sia asincrona, si devono utilizzare oggetti asp.net, se utilizzavo un repeater generando elementi <input type=""> in HTML non potevo effettuare elaborazioni asincrone, penso di essere stato chiaro.
Wamba
Profilo
| Expert
722
messaggi | Data Invio:
gio 24 mag 2007 - 16:05
sei stato chiaro... ma puoi usare componenti server senza nessun problema. Noi qui lo abbiamo fatto anchwe con oggetto custom.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
gigi90
Profilo
| Senior Member
285
messaggi | Data Invio:
gio 24 mag 2007 - 16:08
Puoi mostrarmi un esempio, per favore????
Wamba
Profilo
| Expert
722
messaggi | Data Invio:
ven 25 mag 2007 - 06:55
Qui trovi molte informazioni e link verso più o meno tutti i problemi che puopi incontrare:
http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.aspx
Questo è un vecchio articolo introduttivo di Dino Esposito, calcola che qualcosa è cambiato dal 2005, ma i princi di base ci sono ancora tutti:
http://msdn.microsoft.com/msdnmag/issues/05/06/CuttingEdge/default.aspx
Infine questo è un esempio in cui vine usato un asp:sqldatasource all'interno di un repeter controllo server. Lo so non è un pulsante che sarebbe più chiaro, ma per quello trovi un riferimento nei Topic del primo link.
http://msdn2.microsoft.com/en-us/library/c012haty.aspx
Spero che ti sia utile questa roba
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !