2010-11-29 4 views
7

Comment charger dynamiquement un contrôle utilisateur dans une page?
J'ai une page qui contient des boutons radio. Chaque clic sur un bouton radio charge un contrôle utilisateur (.ascx) dans la page.
Ce que je fais est de charger toutes les commandes en même temps, mais mettre leur visibilité à faux. Lorsqu'un utilisateur clique sur un bouton radio, la visibilité du contrôle utilisateur spécifique est définie sur true.
Par conséquent, je charge tous les contrôles utilisateur à chaque publication.
Existe-t-il un autre moyen de le faire?Chargement dynamique des commandes utilisateur

Répondre

13

Ajouter un div avec le serveur runat sur la page avec un id "divControls" par exemple. Asp vous permet de charger dynamiquement un contrôle utilisateur ".ascx".

Le code ci-dessous devrait résoudre votre problème.

Control ctrl = Page.LoadControl("UserControlPath"); 
divControls.Controls.Clear(); 
divControls.Controls.Add(ctrl); 
0

Y a-t-il des raisons spécifiques de maintenir les commandes userc dans une seule page?

Pensez à l'état d'affichage de la page lorsque vous chargez tous les contrôles et définissez sa visibilité.

Je pense qu'il ya deux solutions possibles:

  1. Ou Créer une page seprate hébergement différent contrôle utilisateur et lorsque l'utilisateur clique sur le bouton radio certain, rediriger vers la page correspondante. Charge à la demande, c'est-à-dire lorsque l'utilisateur demande un contrôle utilisateur, chargez-le, mais en supprimant tous les autres contrôles utilisateur chargés et donc la page n'aura qu'un seul contrôle utilisateur à tout moment.

1

Si vous ne les gardez pas dans une liste, et cette liste en session, vous aurez beaucoup de problèmes.

Le chemin de Ghyath est le bon chemin mais vous devriez aussi les ajouter à une liste.

List<Object> Usercontrols = new List<Objects>{}; 
Control ctrl = Page.LoadControl("UserControlPath"); 
Usercontrols.Add(ctrl); 
Session["Usercontrols"] = Usercontrols; 

À chaque publication, vous devez recharger votre div avec les contrôles de votre liste. Edit: J'ai corrigé la dernière ligne.

Questions connexes