47 messaggi dal 13 gennaio 2003
Ciao, ho un problema caricando dinamicamente uno UserControl tramite il metodo Controls.Add.
L'errore che ottengo è il seguente:

System.Web.HttpException was unhandled by user code
ErrorCode=-2147467259
Message="Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request."
Source="System.Web"
StackTrace:
at System.Web.UI.Control.LoadViewStateRecursive(Object savedState)
at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState)
at System.Web.UI.Control.LoadViewStateRecursive(Object savedState)
at System.Web.UI.Control.AddedControl(Control control, Int32 index)
at System.Web.UI.ControlCollection.Add(Control child)
at _Default.Page_Load(Object sender, EventArgs e) in C:\danilo\Projects\WebSite\WebSite5\Default.aspx.vb:line 82
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

La cosa che mi sembra strana è che nello UserControl se tolgo l'ultimo textbox aggiunto tutto funziona, se lo rimetto ho questo errore.
Il problema è che il textbox che aggiungo ha un nome casuale, quindi non può aver riferimenti con nulla di esistente.
Ho per curiosità aggiunto una label e mi restituisce ancora l'errore, se la tolgo funziona.
Non riesco a trovare una logica in questo problema.

Grazie
Ciao
Danilo
Modificato da daniloc il 13 giugno 2006 12.30 -

Danilo Caldara
per caricare correttamente il ViewState di un controllo, questo deve essere nel medesimo "contenitore" e necessarioamente mantenere il solito nome.

perche non puoi associare un id costante tra i diversi postback?

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
47 messaggi dal 13 gennaio 2003
forse ho capito, quando uno usercontrol A tramite un PostBackUrl chiama uno Usercontrol B io devo lascire lo stesso id ?
Io allo usercontrol assegno sempre il medesimo ID !
grazie
ciao
danilo
Modificato da daniloc il 13 giugno 2006 14.29 -

Danilo Caldara
cosa intendi per chiamare un UserControl? un UserControl non è richiamabile, può essere solo contenuto all'interno di una pagina.

quando aggiungi L'UserControl alla pagina? puoi postare un pò di codice?

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
47 messaggi dal 13 gennaio 2003
ecco, questo è il codice

Dim mioControl As UserControl = Me.LoadControl(exc) ' + ".ascx")
mioControl.ID = "CC"
CenterPage.Controls.Add(mioControl)

exc è il nome dello UserControl, che può cambiare in base ad un parametro, quindi la stessa pagina può contenere diversi UC ma io do lo stesso ID.

spero ci siano sufficenti indicazioni.

ciao
danilo

Danilo Caldara
ok, l'errore del viewstate è probabilmente dovuto al fatto che carichi un UserControl diverso, con il nome del precedente.

ex:

>nessun UC caricato.
>PostBack con parametro per caricare UC A
>Secondo PostBack, stavolta carichiamo UC B
--Inserisci UC B a cui dai il solito nome del UC A
--Asp.net tenta di ripristinare lo stato di A ma in realta trova B al suo posto.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
47 messaggi dal 13 gennaio 2003
capito, cambio nome
grazie
ciao
danilo

Danilo Caldara
di nulla :)

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx

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.