Alex84bb ha scritto:
quelli precedenti non vengono ricreati dalla pagina dopo il postback.
ciao, è normale: i controlli generati dinamicamente vanno ricreati e ri-aggiunti alla pagina ad ogni postback. E' bene eseguire questa operazione nell'evento PreInit della pagina oppure, se stai usando una MasterPage, nell'evento Init della pagina.
Alex84bb ha scritto:
Il tipo 'System.Web.UI.WebControls.Panel' nell'assembly 'System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' non è contrassegnato come serializzabile.
Questo succede perché non può essere creata una rappresentazione stringa dell'oggetto Panel e quindi il ViewState che client-side è una stringa, non può "ospitarlo". Poco male perché come detto poco fa puoi ricreare i controlli e, anzi, è meglio così se no il ViewState crescerebbe a dismisura.
Immagino che tu abbia accesso alle informazioni "Contattato" o "Incontro" anche al postback, quindi in base a quelle sai sempre quali controlli devi ricreare e perciò puoi anche fare a meno del ViewState.
Se invece non avessi accesso a quelle informazioni, puoi pur sempre memorizzarle in un campo <asp:HiddenField e poi recuperarle al postback con un Request.Form["nomeHiddenField"]. Infatti tieni a mente che gli eventi PreInit o Init in cui dovresti ricreare i controlli, si verificano presto nel
ciclo di vita della pagina e in quel momento il ViewState non è ancora stato caricato. Se vuoi passarti delle "istruzioni" su come ricreare i controlli devi necessariamente usare la collezione Request.
In ultimo ti consiglierei di raggruppare le 2 Textbox corrispondenti a "Contattato" in uno user control, e le altre 3 Textbox di "Incontro" in un altro user control. Così è più semplice e il codice della pagina resterà più pulito perché ad ogni "azione" corrisponde sempre un solo controllo.
ciao