Persistenza controlli creati dinamicamente

mercoledì 19 novembre 2008 - 19.14

Gemini Profilo | Expert

ciao,
quando effettuo un postback, aggiungo alla mia pagina una tabella che contiene ulteriori conttrolli aspx (ho provato sia a usare table che htmltable). il problema è che se voglio gestire eventi legati a questi controlli ,ad esempio il click su un tasto che ho posizionato in una cella della tabella, al postback, dunque al nuovo page load, detta tabella non esiste più perchè come detto era stata creata dinamicamente al primo postback.
Io vorrei creare controlli dinamicamente, in modo che siano anche persistenti nei postback successivi alla loro creazione.
ho provato ad aggiungere il controllo tabella al viewstate per recuperarlo nei vari postback attraverso il metodo createchildcontrol(),
ma al momento di aggiungere il cotrollo al viewstate, ottengo un messaggio di errore che dice che i controlli Table o htmlTable non sono serializzabili.

come faccio dunque a serialiZZare un insieme di controlli per salvarli nel viewstate ?
Grazie mille

19018 Profilo | Expert

Credo che il problema sia che ogni volta nel load della pagina ti ricrea la tabella, dovresti mettere un controllo con un contatore memorizzato nella sessione, che parte da zero.

if(!IsPostback)
Session["Counter"] = 0;

if(IsPostback && Session["Counter"]==0)
CreaTabella();
else
Session["Counter"] = Session["Counter"] +1;

In questo modo al primo postback ti crea la tabella, ai successivi non succede nulla e non dovresti perdere i dati.

E' solo un suggerimento, non so se funge, ho scritto di getto il codice, cmq l'idea è chiara credo
ciao

ciao

Stefano Passatordi

http://blogs.dotnethell.it/stem/

kontax Profilo | Junior Member

A quello che so, dato che lavori in maniera dinamica, la tabel non viene salvata nel viewstate.
Quindi mi sa che ti tocca ricreare la tabella dopo ogni postback (fra l'altro, http://www.dotnethell.it/forum/messages.aspx?ThreadID=4384).
Comunque, in generale, se usi controlli generati dinamicamente, magari questo ti può far comodo http://www.denisbauer.com/ASPNETControls/DynamicControlsPlaceholder.aspx
L'ho usato una volta tempo fa per prova, e non mi sembrava male..
Ciao

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 !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5