J'ai un usercontrol qui déplace dynamiquement sur la méthode CreateChildControls certains contrôles web. Lorsque vous utilisez cette commande dans une page comme:Comment puis-je déplacer des contrôles dans un contrôle utilisateur ajouté dynamiquement dans la page?
<myControls:MyUserControl runat="server" ID="myUserControl" />
Il fonctionne parfaitement.
Mais si je veux ajouter que UserControl dynamiquement dans une page comme:
<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:PlaceHolder runat="server" ID="plhControls" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button runat="server" ID="btnAdd" OnClick="btnAdd_Click" />
.cs
protected void btnAdd_Click(object sender, EventArgs e)
{
MyUserControl myUserControl =(MyUserControl)LoadControl("~/Controls/MyUserControl.ascx");
myUserControl.ID = "test";
plhControls.Controls.Add(myUserControl);
}
Il se bloque dans mes CreateChildControls avec l'erreur: La collection de contrôle ne peut pas être modifié pendant DataBind , Init, Load, PreRender ou Décharger les phases.
La ligne exacte est quand ajouter les WebControls à l'espace réservé à l'intérieur de mon UserControl:
plhContent.Controls.Add(myWebControl);
Je ne comprends pas pourquoi, dans ce cas, je ne peux pas bouger un contrôle web dans l'événement CreateChildControls quand j'ajoute mon UserControl dynamiquement.
Malheureusement, je ne peux pas créer mon contrôle plus tôt, à cause d'un précédent mouvement de contrôle. et par conséquent je ne peux pas utiliser les paramètres pour la publication. –