Récupérer ID d'un élément dans un control composite [C#]

Signaler
Messages postés
147
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
8 décembre 2007
-
Bubuss
Messages postés
147
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
8 décembre 2007
-
Lorsque je créé un control composite sur le rendu j'ai toujours une balise :

Elle entour le rendu de mon control

Côté code les éléments contenu dans mon control sont paramétrés de la sorte :
monElement.ID = "valeur ID"
Mais dans le rendu l'ID des éléments ressort sour cette forme :
ctl00_monCC + _ + valeur ID

Je penses que tout ça sert à éviter les ID en double dans le cas ou plusieur Control du même type sont sur une même page mais alors comment faire pour récupérer l'ID réel rendu côté client d'un élément vu que monElement.ID = "valeur ID" ?

Si quelqu'un peut également me dire le rôle et si il n'y a pa moyen de se débarrasser de la balise span... ça m'intéresse aussi!
Merciiii

5 réponses

Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
Salut,


la valeur que tu récupères côté client comme 'ID' du conrtrôle correspond à la valeur de 'clientID' côté code. Je pense que le seul moyen de le récupérer est de formater la chaîne "ctl00_monCC + _ + valeur ID" .

Elle est toujours construite de la même façon.





<hr />

@+  
Messages postés
147
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
8 décembre 2007

Et pour le Span tu aurai une solution/explication ?
Pour l'ID de rendu j'ai trouvé comment récupérer le nom de manière objet :
this

.ClientID +
this.ClientIDSeparator + monElement.ID
Merci encore drahcir
Messages postés
147
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
8 décembre 2007

(Je note quand même que la propriété monElement.ClientID ne retourne pas le nom réel côté client mais la valeur de l'ID)
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
Bonsoir,

j'ai pas compris ce que tu veux faire, la propriété ClientID est construite à partir des ClientID des parents séparé de ClientIDSeparator si tu veux recuperer le clientID d'un label tu n'as qu'a faire monlabel.clientID ...

la proprité ClientID correspond à la propriété ID pour tous les contrôles et la propriété UniqueID correspond à la propriété name des elements html Cyril - MVS - MCP
Messages postés
147
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
8 décembre 2007

Bien dans mon cas la propriété ClientID ne ramène pas l'ID réel côté client du composant..
Je suis en train de fabriqué un control composite composé d'un panel et de composant imbriqué dont des boutons, dans un des bouton j'ai une action Javascript sur le onclick avec une surcharge qui est l'ID du panel...
monBouton.Attributes.Add("onclick", "javascript:maFonctionJS('" + monPanel.ClientID + "');return false;");

Comme je l'ai signalé, cette ligne ne fonctionne pas et je ne c'est pas pourquoi...
J'ai réussi à obtenir l'ID réel de l'élément avec ceci :

monBouton.Attributes.Add("onclick", "javascript:maFonctionJS('" + this.ClientID + this.ClientIDSeparator + monPanel.ID + "');return false;");

Voilà si tu as une explication sur la raison pour laquelle la propriété directe .ClientID de l'élément ne retourne pas l'ID réel côté client qui lui, est composé du ClientID du Control Composite, d'un séparateur, et de l'ID du panel... ben ça m'intéresse!

Moi je penses que c'est que temps que le control n'a pas été généré le ClientID de l'élément n'est pas final et que, comme je suis dans le code j'imagine qu'il faut lui préciser à la main son futur nom... mais je peux me tromper je suis débutant!