Master Page & GetElementsByID

Résolu
cs_Myke Messages postés 138 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 2 février 2010 - 17 juil. 2006 à 21:40
cs_Myke Messages postés 138 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 2 février 2010 - 19 juil. 2006 à 00:02
Comment fait on pour integrer la function Javascript GetElementsById. Le problème est que je ne trouve pas le control dans la page une fois produite. En regardant le html produit par asp.net 2.0 les controles semblent être dans un frame different. Est-ce que quelqu'un peut m'éclairer?

[s]Myke/s

4 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
18 juil. 2006 à 09:21
Bonjour, pour garantir l'unicité des ID générés ASP.net concatene les ID du parent vers le fils c'est à dire que l'id que tu recherches doit etre contentplaceholder1_moncontrol

pour récuperer cet ID unique il faut passer par la propriété toncontrol.uniqueID :-)

<hr />Cyril - MVS - MCP
3
cs_Myke Messages postés 138 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 2 février 2010
19 juil. 2006 à 00:02
J'ai trouvé de l'information suplementaire ici pour ceux que ca interresse :
http://msdn2.microsoft.com/fr-fr/library/3hc29e2a.aspx

Référencement de contrôles rendus à l'intérieur d'autres contrôles

Certains contrôles rendent des contrôles enfants dans la page. C'est notamment le cas des contrôles de listes de données tels que les contrôles GridView, DetailsView, FormView, DataList et Repeater, ainsi que des contrôles utilisateur et des contrôles WebPart.

Dans ces cas, les contrôles enfants ne peuvent pas avoir d'ID unique, soit parce que les contrôles enfants sont définis dans un modèle qui génère de nouvelles instances du contrôle pour chaque ligne de données (contrôles de listes de données), ou parce que le contrôle parent peut être ajouté à la page depuis une source externe (contrôles utilisateur et contrôles WebPart). Ces contrôles parents sont par conséquent des conteneurs de dénomination (naming container) (autrement dit, ils implémentent INamingContainer). Un conteneur de dénomination (naming container) veille à ce que ses contrôles enfants aient des ID uniques dans la page.

Par exemple, vous pouvez créer une propriété ItemTemplate dans le contrôle DataList et ajouter un contrôle CheckBox à l'ID duquel vous affectez la valeur <tt>checkEnabled</tt>. Lorsque le contrôle DataList est rendu, un nouveau contrôle <tt>checkEnabled</tt> est rendu pour chaque élément de données. La page rendue ne devant pas contenir plusieurs instances d'un élément nommé <tt>checkEnabled</tt>, le contrôle DataList crée une identité unique pour chacun de ses contrôles enfants.

L'identité unique des contrôles enfants d'un conteneur de dénomination (naming container) est générée en rendant deux propriétés. Pour chaque contrôle enfant :

<li>La propriété UniqueID du contrôle est rendue comme attribut name.

</li><li>La propriété ClientID du contrôle est rendue comme attribut id.

</li>Les propriétés ClientID et UniqueID sont basées sur la propriété ID d'origine, modifiée par suffisamment d'informations pour garantir que le résultat dans la page sera unique. La valeur de ClientID (c'est-à-dire de l'attribut id dans l'élément rendu) peut être référencée dans le script client.

Si, dans votre navigateur, vous affichez une page avec un conteneur de dénomination (naming container), vous pouvez en regarder la source pour y voir les ID uniques générés sous forme d'attributs name et id des contrôles enfants du conteneur de dénomination (naming container). Il sera néanmoins déconseillé d'utiliser une référence directe aux ID tels que vous les voyez dans le navigateur. La formule utilisée pour générer des ID uniques pour les contrôles enfants peut changer. Cherchez plutôt à obtenir la valeur de la propriété ClientID du contrôle enfant et utilisez cette valeur pour référencer le contrôle enfant. Par exemple, vous pouvez créer dynamiquement un script client sur votre page. Si votre script client référence un contrôle enfant, récupérez la propriété ClientID du contrôle enfant et intégrez-la à votre script dynamique.

Myke
3
cs_Myke Messages postés 138 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 2 février 2010
18 juil. 2006 à 15:46
Hey je te remercie tu m'as mis sur une bonne piste !

Ce que je cherchais a faire c'est recuperer de récuperer un control textbox qui se trouve dans un detailview qui lui se trouve dans un control placeholder (Master Page). J'ai reussi en cherchant  ctl00_MainControl_DV_InsertID. Ce que je voudrais savoir maintenant c'est si je fais bien de chercher le control de cette facon. Ce qui m'inquiète c'est le <ct100> en avant du control est ce que ce prefixe peut changer et qu'est ce que cele veut dire ? Existe-t-il une comamnde qui me permettrais de générer le  nom du control  à partir du code behind ?

Myke
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
18 juil. 2006 à 15:59
Sur la signification recherche sur le forum

pour connaitre l'uniqueID du controle il faut utiliser la propriété UniqueID de ton controle ...

<hr />Cyril - MVS - MCP
0
Rejoignez-nous