Lors de l'utilisation de pré-rendu sur PageLoad?
Liés à la question: Obtenez Tous les Contrôles Web d'un Type Spécifique sur une Page
Dans la question ci-dessus, je demande comment je peux obtenir tous les contrôles, fonctionne comme un charme, mais quelque chose ne correspondait pas donc j'ai pensé que ce pourrait être moi. J'ai le code suivant mais il n'est pas de manipuler les contrôles de la page, mais en théorie ça devrait fonctionner.
List<DropDownList> allControls = new List<DropDownList>();
ControlEnhancer.GetControlList<DropDownList>(Page.Controls, allControls);
foreach (DropDownList childControl in allControls)
{
foreach (ListItem li in childControl.Items)
{
li.Attributes.Add("title", li.Text);
}
childControl.Attributes.Add("onmouseover", "this.title=this.options[this.selectedIndex].title");
}
C'est le code, GetControlList() code que vous pouvez obtenir à partir de la question connexe, qui montre comment l'on obtient tous les contrôles, c'est juste que mes manipulations. Je suis en train d'essayer d'obtenir tous les dropdownlist listitems et ajouter un titre à leur afin que je puisse avoir une info-bulle.
C'est une solution rapide pour IE8 et au-dessous de laquelle les coupures de texte long dans les listes déroulantes.
Mise à jour: il semble que les questions n'est pas avec le code plus l'emplacement, il n'est pas exécutée jusqu'à ce que je me force à une publication sur la page, le problème est différent altogther publierons réponse sous peu.
Avait en cours d'exécution dans le chargement de la page, nécessaire pour le faire fonctionner en pré-rendu de l'événement.
OriginalL'auteur Anicho | 2011-09-12
Vous devez vous connecter pour publier un commentaire.
Page_Load
arrive souvent trop tôt;Page_PreRender
est le dernier moment avant de le HTML de la page est effectivement rendu par le navigateur et dans de nombreux cas, est le meilleur endroit pour définir les attributs sur les commandes de l'utilisateur.Ce parce que pendant le formulaire web (page) cycle de vie, il y a d'autres événements dans la page (et dans les contrôles de l'utilisateur contenues dans la page...) qui parfois supprimer/remplacer/remplacer (vraiment) ces attributs, donc la seule façon vous pouvez obtenir ces attributs dans le navigateur est à ajouter après tous les autres événements de cycle de vie ont été licenciés et des traités, dans le
Page_PreRender.
"Page_PreRender est le dernier moment avant de le HTML de la page est effectivement rendu" - pas vrai, il y a des événements ultérieurs,
PreRenderComplete
etSaveStateComplete
. Voir ma réponse.OriginalL'auteur Davide Piras
En fait, même
PreRender
peut-être trop tôt dans certains cas (par exemple, vous pourriez avoirDropDownList
les contrôles ajoutés à l'arborescence de contrôle lors de la liaison de données de contrôle que l'utilisationDataSourceID
).Il y a deux autres événements qui pourrait être plus approprié:
PreRenderComplete. À ce stade, toutes les commandes sont créées et la page est prête à rendre.
SaveStateComplete. Se produit après l'état d'affichage et de contrôle de l'état ont été enregistrés. Tous les changements que vous apportez ici ne resteront pas à l'état d'affichage.
Dans votre exemple (ajout de client-côté attributs), j'aimerais utiliser le
SaveStateComplete
événement afin d'éviter d'afficher l'état de la météorisation.OriginalL'auteur Joe