Lister tous les controls d'une page

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 545 fois - Téléchargée 28 fois

Contenu du snippet

Voila un bout de code qui permet de lister tous les controls d'un System.Web.UI.Page

Le but étant de rechercher tous les Label et Button pour une futur initialisation mais cela marche pareil pour les autres types de controls
Oublier pas de Caster.
Aparemment d'apres ce que j'ai trouvé, la Page contient 3 Controls dont un des 3 contients tout les controls alloués sur la page.

Source / Exemple :


protected System.Web.UI.WebControls.Label Label1;
    protected System.Web.UI.WebControls.Label Label2;
    protected System.Web.UI.WebControls.Label Label3;
    protected System.Web.UI.WebControls.Label Label4;
    protected System.Web.UI.WebControls.Button Button2;
    protected System.Web.UI.WebControls.Button Button3;
    protected System.Web.UI.WebControls.Button Button4;
    protected System.Web.UI.WebControls.Button Button1;
...

      int j=0,k=0;
      foreach(Control crtl in this.Controls)
      {
        if (crtl.HasControls())
        {
          foreach(Control crtll in crtl.Controls)
          {
            if (crtll is Label) Label4.Text+="Label detected (" + k.ToString() + ") ";
            if (crtll is Button) Label3.Text+="Button detected (" + k.ToString() + ") ";
            k++;
          }
        }
        j++;
      }

Conclusion :


Questions...Réflexions...Fautes...Utilisations...n'hésité pas!!!

A voir également

Ajouter un commentaire Commentaires
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
8 juin 2006 à 14:03
Si je met un UserControl qui contient un label, le label ne sera pas détécté, fais plutot une boucle récursive ...

Il y a généralement 3 controles dans Page.Controls, le premier est du <html> jusqu'au <form> c'est un type literalControl, le second est la balise form, et le 3eme va de la balise <form> à la balise </html>
Ceci vient du découpage de asp.net, lors de la précompilation il analyse le fichier .aspx, et découpe la page en fragment de controle suivant s'ils ont ou non l'attribut runat="server", si les controles n'ont pas d'attribut runat=server alors ils sont inscrit dans un literalControl...
Par exemple, si tu met un <head runat="server"> tu auras 4 controles dans page.Controls :)


Met au final, ta source est-elle vraiment utile ? si oui je suis curieux de savoir pour quoi !

Cyril
Admin CS
cs_poppyto Messages postés 540 Date d'inscription dimanche 29 décembre 2002 Statut Modérateur Dernière intervention 13 mai 2011
9 juin 2006 à 10:59
Même chose que le fils de Dieu Online ;o), quoiqu'il y a sûrement une utilité sinon Coolpix08 n'aurait jamais codé ça hein ?

" Questions...Réflexions...Fautes...Utilisations...n'hésité pas!!! "

Fautes !! ! !!!!!!!

>>>>n'hésitEZ
>>>>OublieZ pas de caster.
(t'as du mal avec la deuxième personne du pluriel ;) !)
TOTOCHITO Messages postés 63 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 16 novembre 2007
9 juin 2006 à 12:29
je débute en asp.net

Comment ça se passe dans un controle conteneur tel qu'un datalist ou formview.
J'ai essayé d'acceder a des controles serveurs (label runat=server ) mais je n'y arrive pas.
En fait je souhaiterais rendre invisible ou visible des labels en fonction de valeurs récupérées avec request.querystring("mavaleur").
le fils de dieu doit pouvoir m'éclairer(si c'est le fils de dieu il doit pouvoir non !!!).
gldfdp Messages postés 90 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 21 février 2008
6 juil. 2006 à 14:31
>Essaie un truc du genre:
if (Request.QueryString["tavaleur"]==lavaleur)
((letypedecontrole)TonConteneur.FindControl("toncontroleacacher")).Visible=false;
TOTOCHITO Messages postés 63 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 16 novembre 2007
6 juil. 2006 à 14:44
merci pour ta reponse je n'ai pas essayé mais je te tiens au courant.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.