OVH Cloud OVH Cloud

compo imbriqué

2 réponses
Avatar
TOny
J'ai créé 2 compos (compilés dans des dll) et je souhaite imbriquer ces 2
objets.

- soit C1 et C2, mes 2 compo
- C2 viendra s'intégrer dans C1
- C2 est un composant composite (rendu via la méthode CreateChildControls)
Pb :
1. Si j'effectue le rendu de C1 via CreateChildControls, tout fonctionne
mais je ne m'en sort pas avec mes javascript client (qui eux ne fonctionnent
pas du coup) car les id des composants s'imbriquent et sont gérés
automatiquement.
Par exemple si j'affiche C2 tout seul les id seront "idc2_idcontrolenfant" ;
par contre si je fais mon imbrication alors les id de C2 ressembleront à
"idc1_idc2_idcontrolenfant".
Du coup c'est la galère
2. Si j'effectue mon rendu de C1 avec Render, le compo C2 (ajouter à l'aide
de c1.controls.add) n'apparait pas !

En espérant avoir été clair, merci pour votre aide

Tony

2 réponses

Avatar
Cyril S.
La méthode ClientID de la classe System.Web.UI.Control retourne l'ID généré
dans la page.

Donc si tu l'utilises plus de problème.

--
CS


"TOny" wrote:

J'ai créé 2 compos (compilés dans des dll) et je souhaite imbriquer ces 2
objets.

- soit C1 et C2, mes 2 compo
- C2 viendra s'intégrer dans C1
- C2 est un composant composite (rendu via la méthode CreateChildControls)
Pb :
1. Si j'effectue le rendu de C1 via CreateChildControls, tout fonctionne
mais je ne m'en sort pas avec mes javascript client (qui eux ne fonctionnent
pas du coup) car les id des composants s'imbriquent et sont gérés
automatiquement.
Par exemple si j'affiche C2 tout seul les id seront "idc2_idcontrolenfant" ;
par contre si je fais mon imbrication alors les id de C2 ressembleront à
"idc1_idc2_idcontrolenfant".
Du coup c'est la galère
2. Si j'effectue mon rendu de C1 avec Render, le compo C2 (ajouter à l'aide
de c1.controls.add) n'apparait pas !

En espérant avoir été clair, merci pour votre aide

Tony





Avatar
TOny
Je viens de trouver :
il suffit d'enlever "Implements INamingContainer" et le id ne sont plus
gérer automatiquement !

Merci pour la réponse, c'est interessant aussi...

Tony

"Cyril S." a écrit dans le message de
news:
La méthode ClientID de la classe System.Web.UI.Control retourne l'ID
généré
dans la page.

Donc si tu l'utilises plus de problème.

--
CS


"TOny" wrote:

J'ai créé 2 compos (compilés dans des dll) et je souhaite imbriquer ces 2
objets.

- soit C1 et C2, mes 2 compo
- C2 viendra s'intégrer dans C1
- C2 est un composant composite (rendu via la méthode
CreateChildControls)
Pb :
1. Si j'effectue le rendu de C1 via CreateChildControls, tout fonctionne
mais je ne m'en sort pas avec mes javascript client (qui eux ne
fonctionnent
pas du coup) car les id des composants s'imbriquent et sont gérés
automatiquement.
Par exemple si j'affiche C2 tout seul les id seront
"idc2_idcontrolenfant" ;
par contre si je fais mon imbrication alors les id de C2 ressembleront à
"idc1_idc2_idcontrolenfant".
Du coup c'est la galère
2. Si j'effectue mon rendu de C1 avec Render, le compo C2 (ajouter à
l'aide
de c1.controls.add) n'apparait pas !

En espérant avoir été clair, merci pour votre aide

Tony