2009-03-23 7 views
3

Fondamentalement, je veux créer un contrôle utilisateur dans le code derrière, DataBind() et puis insérez le contrôle dans la page couranteQu'est-ce qu'une bonne façon d'initier un contrôle utilisateur à partir du code derrière

J'essaie actuellement ceci: Mais tous les contrôles à l'intérieur sont null. Par exemple, j'ai un volet avec id pnlComments et quand j'essaye d'y accéder dans la méthode IncidentHistoryGroupComment.DataBind() j'obtiens null. Donc, la question est de savoir comment initialiser correctement un contrôle utilisateur à partir du code de sorte que tous les contrôles soient affectés à leurs instances dans IncidentHistoryGroupComment. designer.cs afin que je puisse y accéder facilement.

Répondre

1

devrait être quelque chose comme ceci:

var comment = (IncidentHistoryGroupComment)Page.LoadControl("~/Controls/IncidentHistoryGroupComment.ascx"); 

Ensuite, vous insérez simplement dans l'arbre de commande

2
MyControl myControl = (MyControl)LoadControL("~/MyControl.ascx"); 

J'ai changé le nom de votre contrôle pour une meilleure lisibilité.

0

Je pense que votre problème ne concerne pas l'instanciation du contrôle utilisateur.

Dans votre événement DataBind mettre ce code en première ligne:

this.EnsureChildControls(); 

Il instancie tous les contrôles enfants si elles ne sont pas istantiated. Je veux dire qu'il vérifie les contrôles enfants et appelle createChildControl si nécessaire.

Questions connexes