Ciao,
ultimamente ho perso un po' di tempo imbattendomi in un comportamento di ASP.NET a cui non riesco a dare una spiegazione.
Ho una pagina che carica un web user control a runtime, inserendolo in un panel.
Il markup della pagina è il seguente:
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<div>
Anno
<asp:DropDownList ID="ddlAnno" runat="server" AutoPostBack="true">
</asp:DropDownList>
<br />
<asp:Panel ID="pnlView" runat="server">
</asp:Panel>
</div>
</asp:Content>
Durante il Page_Load() viene eseguito il seguente codice:
Dim idAnalysis As Integer = Integer.Parse(ddlAnno.SelectedValue)
Dim wuc As UCView = CType(LoadControl("~/UCView.ascx"), UCView)
wuc.IdAnalysis = idAnalysis
wuc.ID = "ctrlView"
wuc.UpdateControl() ' Crea i controlli interni al Web User Control
pnlView.Controls.Clear()
pnlView.Controls.Add(wuc)
Con questo codice gli eventi scatenati dal web user control (al suo interno ci sono dei linnkbutton) non venivano lanciati. Modificando però la sequenza delle istruzioni nel codice in questo modo:
Dim idAnalysis As Integer = Integer.Parse(ddlAnno.SelectedValue)
Dim wuc As UCView = CType(LoadControl("~/UCView.ascx"), UCView)
wuc.IdAnalysis = idAnalysis
wuc.ID = "ctrlView"
pnlView.Controls.Clear()
pnlView.Controls.Add(wuc)
wuc.UpdateControl() <<--- MESSO IN FONDO AL CODICE
in questo modo gli eventi vengono correttamente lanciati. Non riesco a capire come mai sia importante PRIMA aggiungere il web user control al pannello e SUCCESSIVAMENTE creare i controlli interni al web user contro.
Avete qualche idea a riguardo?
Grazie
Ciao
Federico