Bonjour,
je dois développer une macro qui récupère les contrôles présents sur une page web, par exemple, s'il y a un label et une textbox, ma macro doit me le dire. Comment faire cela ?
Merci
Bonjour,
je dois développer une macro qui récupère les contrôles présents sur une page web, par exemple, s'il y a un label et une textbox, ma macro doit me le dire. Comment faire cela ?
Merci
ca n'est pas très clair. c'est sur tes pages aspx quand tu utilises visual web que tu veux le savoir?
Une macro qui va récupérer le nom des contrôles d'une page web, je ne vois pas comment dire autrement.
Tu peux boucler (avec un foreach par exemple) sur la propriété Controls de l'objet Page et récupérer la propriété Name de chaque contrôle.
J'ai fait ca au page load pour tester:
Ca me renvoit le type des controles (Label, TextBox, ...) mais pas leur nom (Label1, ...). Que dois-je changer ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 protected void Page_Load(object sender, EventArgs e) { foreach (Control crtl in this.Controls) { if (crtl.HasControls()) { foreach (Control crtll in crtl.Controls) { System.Diagnostics.Debug.WriteLine(crtll.ToString()); } } } }
Ben c'est normal, ToString renvoie le nom du type.
Si tu regardes dans la documentation, tu verras, comme je te l'ai écrit plus tot, qu'il existe une propriété Name pour les objets de type Control.
J'arrive à récupérer le nom des contrôles grâce à ca:
Code : Sélectionner tout - Visualiser dans une fenêtre à part System.Diagnostics.Debug.WriteLine("Nom du contrôle: " + crtll.UniqueID.ToString());
Effectivement, il s'agit d'un WebControl, il n'y a pas de propriété Name, mais une propriété ID. Toutes mes excuses.
C'est pas grave, le tout c'est de chercher
Par contre, penses-tu qu'il y a moyen que je lui dises d'aller voir telle page web plutot que de faire un this dans le pageload ?
Je ne suis pas sûr que ce soit possible étant donné qu'il te faudrait obtenir une instance de la classe.
Il faudrait instancier la classe correspondant à la page, mais je ne suis pas sûr que ça ne fasse pas paniquer IIS. Tu peux essayer tout de même en instanciant la page désirée.
Une autre approche serait peut-être d'utiliser la réflexion pour récupérer les attributs de la page et déterminer ceux qui héritent de WebControl.
Mais là dans les deux, je pense à voix haute, il ne faut pas prendre çà pour argent content, ça peut ne pas être possible.
A confirmer.
J'ai eu du nouveau:
Je ne sais vraiment pas comment fairec'est dans une macro que j'ai besoin de ca. pas dans la page
je défini un macro et je dois pouvoir la faire tourner pour n'importe quelle page....
une macro comme dans excel.
Je ne sais pas ce que tu appelles une macro en C#... Peux tu préciser ce que tu veux dire ?
a terme, je voudrai une macro qui a parcour tout mon projet.
Retrouve toutes les webforms de mon projet. et pour chacunes des webforms me liste tous les webcontrols dans un fichier xml
style :
<forms>
<WebForm1>
<controls>
<buton id=bt1>
</buton>
<label id=lb1>
</label>
...........
</controls>
</WebForm1>
...............
</forms>
si tu sais lister tous les controls d'une form et me faire un msgbox du type de control et de l'id, je me charge de faire l'écriture dans un fichier xml.
a partir d'une macro on arrive bien à enumerer toutes les fonctions d'une class. toutes les class d'un namespace.
je suis sur qu'il y a moyen de lister tous les controls d'une page
Pour finir on voudrait ca sous forme d'add-in de visual studio.
C'est faisable ?
Moi je dois faire exactement cela mais dans le LoadComplete de la form
Mes controles que je dois recupérer sont dans des cellules d'une table
je n'arrive pas a les recuperé
Faut il faire quelques choses en plus que le code spécifié plus haut ?
par contre je recupere des ctl01, ctl02 etc que je n'ai pas dans ma Webform
je comprends pas :-(
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager