IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Accès au ContentPalceHolder des MasterPage dans la page.


Sujet :

ASP.NET

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut Accès au ContentPalceHolder des MasterPage dans la page.
    Salut

    Je ne suis pas encore un habitué des MasterPage et j'ai un souci pour accéder au Content par le CodeBehind.

    Voilà ma page, côté HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <asp:Content ID="Content2" ContentPlaceHolderID="cphMenuGauche" Runat="Server">
    </asp:Content>
    <asp:Content ID="Content3" ContentPlaceHolderID="cphCentral" Runat="Server">
    	<br />
    	<uc1:VisuelCampagne ID="VisuelCampagne1" runat="server" />
    	<br />
    </asp:Content>
    Je ne trouve pas le moyen de faire un ajout de control dans le Content2.
    Le code suivant me renvoi une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Page.FindControl("content2").Controls.Add(compo)
    Message d'erreur :
    La référence d'objet n'est pas définie à une instance d'un objet.
    J'ai fait ce truc là parce que Content2 ne sort pas dans mon autocomplétion.

    Pouvez vous m'aider ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  2. #2
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Je ne comprend pas bien.
    Souhaites tu accéder a un controle situé sur le MasterPage depuis une page enfant ? Ou accéder à une page enfant depuis le MasterPage ?

    Essayes de passer par: pour le premier cas ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Master.Page.Form.FindControl
    dans le second cas.
    En effet, le master page englobe les pages enfants et tous les controles sont imbriqués dans un seul et unique formulaire qui dispose de la méthode FindControl().

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Je souhaite mettre un controle dans le Content de ma page qui est induis par la masterpage

    Le Findcontrol ne fonctionne aps, il me dit qu'il faut une instance d'objet.

    J'arrive pas à comprendre comment fonctionne le Content. J'ai l'impression que c'est pas un objet qu'on peut manipuler comme ça.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  4. #4
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    bon, j'ai utilisé une technoque de tatonnement et j'ai fini par trouvé un truc, mais ça me parait plus que bizarre

    je dois faire ça pour arrive à metre un truc dans le Content

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Page.Controls(0).Controls(3).Controls(1).Controls(1).Controls(0).Controls.Add(compo)
    Vous conaitriez pas un truc plus simple ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  5. #5
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Je ne vois pas pourquoi tu veux ajouter des controles sur des pages enfants depuis le master page.

    Lorsque tu utilises le masterpage, tu y insere les controles et styles qui seront présents sur toutes les pages héritant de ce master page.
    Ensuite, dans les pages enfants, tu inseres ce que tu veux SANS TENIR COMPTE DU MASTERPAGE.

    Enfin, si tu veux acceder a un controle dans une page heritant du masterpage, tu peux utiliser me.Form.FindControl. Et si tu souhaites y ajouter des controles dynamiquement, utilises me.Form.Controls.Add, sans passer par le contentPlaceHolder.

  6. #6
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide.

    J'ai dû mal m'exprimé, je ne souhaite pas ajouter des contrôles à partir de la masterPage.
    Je vais reformuler.
    J'ai une page DEFAULT.ASPX qui est faite avec une MastrePage dans laquelle il y a un contentPlaceHolder. Donc dans la page DEFAULT.ASPX il y un Content dont l'Id est Content2.
    J'ai fait un composant Utilisateur COMPO.ASCX et je souhaite le placer dynamiquement dans mon Content2 à partir du Code Behind.
    Ce composant dispose d'une prorpiété que j'ai fabriqué et je fais une boucle pour afficher le composant plusieurs fois avec un chagement de la valeur de propriété. Et lorsque je cherche à ajouter le composant dans le content, ben je trouve pas le moyen de le faire.

    Est ce que c'est plus clair ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  7. #7
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Content2.Controls.add(ton_ascx)

  8. #8
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Non, c'est bien ça qui me pose un gros soucis, c'est que je n'ai pas cette possibilité là dans l'autoComplétion.
    Aussi bizarre que cela puisse paraitre Content2 n'est pas disponible.

    Une autre idée ou alors une explication sur le pourquoi j'ai pas ça dans mon autocomplétion ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  9. #9
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    1- C'est pas parce que c'est pas dans l'autocompletion que ça existe pas.
    2- Est-ce que content2 est déclaré dans ton .vb ?

  10. #10
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    D'accord avec ton point 1.
    Par contre, je en comprends pas ton point 2 . Mon Content2 c'est l'ID du place Holder qui se trouve dans la page HTML.
    Normalement les objets HTML n'ont pas à être déclaré dans le CodeBehind.
    Si je mets un <asp: talbe id="toto" je retrouve toto dans mon autocomplétion

    Alors, question induite : est ce qu'il n'y a pas un traitement particulier à mettre sur le ContentPlaceHolder ?

    Merci pour ton aide.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  11. #11
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Il a un runat="server" ton content

  12. #12
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Bon, en fait je pense que c'est normal de ne pas avoir accès au content.
    Ce "control" n'est pas rendu par la page lors de la génération

    Page.Controls.add(ton_ascx) devrait faire l'affaire

  13. #13
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    D'ou la nécessité d'utiliser le FORM plutot que le content.
    Car depuis le form, on peut acceder a la collection de controles de lpage et pr consequent en ajouter...

    As tu essayé ce que je te proposais?

  14. #14
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci les gars

    Alors, le Content2 a bien un Runat="server"
    Ensuite, le Pages.Controls.add(moncompo) ça me le mets en bas de page, donc en dehors du Content2
    Et puis le Me.Form.Controls.Add(moncompo) a le même effet.

    Donc, je capte pas. J'ai beau tourner et retourner le problème, pour l'instant le seul moyen que j'ai trouvé c'est de descendre tout les collections de Controle en partant de Page.

    Donc, si vous ave un idée plus direct, cool, sinon tant pis, je me contenterais de ça, même si c'est moche et terriblement aléatoire. Parce que, je pense à un truc, si je change l'ordre de mes objet dans un collection, ben pouet, dans les choux.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  15. #15
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    salut

    Je me permets une petite remontée de topic car ce qui devait arriver arriva. En ajoutant une TableRow j'ai décalé l'ordre des Controls dans l'arborescence et donc j'ai du revoir les index des Controls dans ma ligne d'appel.
    Voici les deux lignes, la première est l'ancienne, la seconde est la nouvelle qui prend en compte l'ajoute de cette TableRow
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Page.Controls(0).Controls(3).Controls(1).Controls(1).Controls(0).Controls.Add(compo)
     
    Page.Controls(0).Controls(3).Controls(1).Controls(2).Controls(0).Controls.Add(compo)
    Donc, c'est assez difficile de coder efficacement dans ces conditions.
    Avez vous une idée ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  16. #16
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Tu englobes le contenu de ta page dans une div avec runat = server.
    Tu la déclares dans ton .vb

    Puis tu fais ma_div.FindControls("..."), ma_div.Controls.add(...) ...

  17. #17
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Bon, alors j'ai mis ça dans ma MasterPage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <body>
    <form id="form1" runat="server">
    <div id="divmaster" runat="server">
    Et donc dedans ya tout le code.

    Mais, je sèche sur la suite. Dans mon CodeBehind, je déclare ça comment ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  18. #18
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Bon, en creusant dans cette direction, j'ai trouvé un truc, je sais pas trop si c'est bien à ça que tu pensais, mais ça marche.

    Donc, en fait, j'ai enlever le DIV, parce que àa la fin iil sert à rien.
    Et au début de mon code j'ai mis ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim toto As HtmlForm
    toto= Page.Controls(0).FindControl("form1")
    Donc, vu que y a toujours un FORM dans une page, ben cool.
    Ensuite, la page, elle a toujours un Controls(0) au moins. Et dans ce contrôle là, y a toujours le FORM, que se soit avec ou sans MasterPage

    Bref, mon objet toto devient un FORM à part entière et dedans je peux aller cherche tous les contrôles que je veux.
    La petite subtilité c'est qu'il faut prendre le nom du ContentPlaceHolder qu'on à utlisé dans la MasterPage et pas celui qui se trouve dans la page elle même.

    Voilà, merci pour votre aide et bon courage pour ceux qui viendront lire.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Security] Restreindre l'accès à des champs dans une page
    Par longbeach dans le forum Spring
    Réponses: 2
    Dernier message: 30/03/2011, 20h44
  2. Récupérer des info dans une page html
    Par DORBRITZ dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 06/03/2008, 11h13
  3. [des panneaux dans une page web] que choisir ?
    Par oursblanc dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 02/12/2005, 11h02
  4. Récupérer des données dans une page HTML
    Par newdelirium dans le forum Langage
    Réponses: 3
    Dernier message: 26/10/2005, 19h18
  5. Positionner des cellules dans une page
    Par BBe8127 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/10/2005, 10h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo