Hey tout! Je charge un USERCONTROL via une méthode Web et utilise la fonctionnalité LoadControl en tant que telle: puis je fais ce qui suit: p> Problème est que l'événement de page_load du contrôle ne tire pas du tout. Si j'ajoute une autre fonction et que l'appelez-le avant d'ajouter le contrôle à la collecte des commandes de la page, cette fonction incendiera, mais l'événement de page_Load ne tire pas. P> Des idées, des gars? Merci tout! P> p>
3 Réponses :
Vérifiez ASP.NET Page de la page Vue d'ensemble du cycle de vie
Preinit : Relevé après que l'étape de démarrage est terminée et avant le début de l'étape d'initialisation. P>
Utilisez cet événement pour les éléments suivants: P>
Check the IsPostBack property to determine whether this is the first time the page is being processed. The IsCallback and IsCrossPagePostBack properties have also been set at this time. Create or re-create dynamic controls. Set a master page dynamically. Set the Theme property dynamically. Read or set profile property values.
Ajoutez le contrôle pendant la phase de préinit du cycle de vie de la page:
var page = new Page(); var writer = new StringWriter(); page.PreInit += new EventHandler((s, e) => { var control = page.LoadControl(""); (Page)s).Controls.Add(control); }); HttpContext.Current.Server.Execute(page, writer, false);
Où se trouve ce bloc de code? Il devrait être dans la page_init que je pense .. il semble qu'il y ait un problème de cycle de vie ...
Sur la base de mes connaissances, il n'est pas possible d'exécuter des événements lors de la mise en place de contrôles de manière dynamique. Mais j'ai un truc dans le rendu des contrôles utilisateur qui fonctionne.
J'utilise une fonction pour rendre un contrôle utilisateur qui prenne une trajectoire physique du contrôle de l'utilisateur et une liste de propriétés. Je définis une propriété spéciale dans le contrôle de l'utilisateur, qui peut être comme une méthode et lorsque je le définit, exécutez mon code personnalisé. Ceci est la fonction rendu: p> dans le contrôle de l'utilisateur que vous devez rendre définir une propriété par exemple, dans l'événement Render du contrôle de l'utilisateur, vous pouvez ensuite vérifier la valeur du runmycode code>
Définissez des biens que vous souhaitez et lancez la dernière propriété spéciale que vous définissez. p>
RunMycode CODE> propriété et s'il est défini, appelez manuellement les méthodes que les événements augmenteraient normalement. P> P>
Vous pouvez ajouter les tags C # B> et ASP.NET B> à vos balises pour obtenir plus de lecteurs. (Et je devrais vérifier les dates de poste avant de commenter des threads de 2 ans. Je ne faisais que naviguer sur des questions sans réponse).