2010-11-22 22 views
0

Je charge dynamiquement l'un des nombreux contrôles utilisateur en fonction de l'onglet sur lequel l'utilisateur clique. Je stocke l'index de tab sélectionné dans l'état d'affichage. Le contrôle utilisateur a une case à cocher qui déclenche un événement OnChanged. Mon problème est que si je charge le contrôle utilisateur dans Page_Load, l'événement checkbox ne se déclenche pas car le contrôle n'a pas été créé à temps. Si je charge le contrôle utilisateur dans Page_Init, la page ne sait pas quel contrôle utilisateur charger car je ne crois pas que ViewState soit encore chargé. Comment puis-je stocker le contrôle de l'utilisateur à charger ET déclencher les événements sur le contrôle utilisateur?Comment contrôler le contrôle utilisateur à charger de manière à permettre aux événements de contrôle utilisateur de se déclencher

+1

J'ajouterai simplement que vous pouvez déclencher l'événement checkbox si vous le chargez dynamiquement dans Page_Load de la page/du contrôle. S'il ne tire pas, il est probable que quelque chose d'autre ne va pas. Le problème le plus commun que j'ai vu qui crée ce problème n'est pas de mettre l'ID de la case à cocher au même ID chaque fois que vous l'initialisez –

Répondre

1

La meilleure stratégie que j'ai trouvé a été de créer tous les contrôles en cas Page_Init, et définir leurs Visible propriété sur false (en Page_Load dans votre cas) si elles ne sont pas censés être présents sur la page rendu .

Modifier

Une autre option est de déterminer qui contrôle à la charge en fonction d'un autre critère (en plus ViewState). Par exemple, si vous définissez l'onglet en cours sur l'un de vos paramètres de chaîne de requête, ces données seront disponibles dans la requête au cours de Page_Init.

+0

Je ne pense pas que ce soit une option pour moi. Les contrôles utilisateur sont très volumineux et, en raison des performances, je l'ai fait pour qu'un seul soit chargé à la fois. Connaissez-vous d'autres stratégies? – adam0101

+0

@ adam0101: voir mon édition. – StriplingWarrior

+0

@StriplingWarrior, pour répondre à votre modification, je charge le contrôle sur la publication, donc pour obtenir l'index de tabulation dans la chaîne de requête, je devrais avoir la page se rediriger vers elle-même. Puisque la performance est un problème, je ne pense pas que je puisse me permettre un autre cycle de vie de la page. Je pensais utiliser un champ de formulaire caché à la place. Voyez-vous des problèmes avec cela ou avez-vous d'autres options? – adam0101