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 :

Master.FindControl retourne une NullReferenceException ?


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 68
    Par défaut Master.FindControl retourne une NullReferenceException ?
    Bonjour à tous,

    j'ai un soucis qui me pose problème depuis 3 jours, et j'ai beau regarder sur le net, je ne trouve pas la solution.
    Voila mon problème :
    j'ai un Dropdownlist, avec comme id "lang", dans ma master page, jusque la tout va bien, et j'aimerai récupérer la valeur de ce dropdownlist dans mes content pages (et la, ca va moins bien). Pour cela, d'apres le net, je fais comme ca :

    DropDownList ddl = (DropDownList)Page.Master.FindControl("lang");

    Et quand je teste ddl.SelectedValue par exemple ou n'importe quelle autre méthode, ca me retourne une NullReferenceException, donc si je comprend bien c'est comme si le content page n'arrivait pas à récupérer mon dropdownlist.

    Ma question est donc la suivante : comment faire pour récupérer la valeur sélectionnée de mon dropdownlist se trouvant dans ma master page sur une content page ?

    Merci d'avance pour votre aide

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Y a runat="server" dans ta ddl?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 68
    Par défaut
    oui. Et si j'essaye de récupérer la valeur dans la master page, ca la récupere bien, sauf que moi c'est dans la content que je la veux

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Surement un pb chronologique.
    Le Page_Load de ta page est appelé avant le Page_Load de la master page.
    Donc si tu remplis ta ddl dans le Master.Page_Load et que tu cherches à obtenir la valeur dans content.Page_Load, ça va planter

  5. #5
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Est-ce que la DDL est un "enfant" direct de la MasterPage, c'est à dire est-elle directement ajoutée à la master page ou est-elle, par exemple, contenue dans un panel ?

    La méthode FindControl ne cherche que dans les enfants direct d'un contrôle.

    Si par exemple, ta DDL est dans un panel situé sur la master, tu dois faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DropDownList ddl = (DropDownList)Page.Master.FindControl("PanelId").FindControl("lang");
    Ou si tu ne sais pas à l'avance le niveau de ton contrôle ou le nom du contrôle conteneur, je peux te donner le code d'une fonction récursive qui cherche un contrôle à travers toute la filiation d'un contrôle passé en paramètre.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 68
    Par défaut
    lutecefalco : si c'est un problème chronologique, comment je peux faire pour récupérer ce code alors. Car en fait, au début je voulais mettre ce traitement dans le code de ma master page, sauf que le page load de la content est appelé avant le page load de la master, donc ca n'aurait pas pris en compte le changement. J'ai donc essayé de mettre mon code dans le page_init de la master, sauf que ca ne prend pas en compte les postback T'aurais une idée ?

    Pongten : oui la ddl est bien un enfant direct de la master page. Elle est meme déclarée via le code aspx.

    Merci de votre aide !

  7. #7
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Par défaut
    A ta place, je ferrais :

    • Dans le code de ta master page, tu cré une property qui retourne ta DropDownList.
    • Dans ta page content, tu cast "this.master" dans le type de ta MasterPage et tu utilises la property que tu as créé.
    Ludovic,
    Envie de contribuer à la rubrique SharePoint ? Contactez moi par MP !

    SharePoint : http://sharepoint.developpez.com
    Mon site : http://lefortludovic.developpez.com
    Mon blog : http://www.consultpoint.net/blog

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 68
    Par défaut
    Ca me semble pas mal, mais étant débutant en c#, comment tu crés une property ?

    Merci

  9. #9
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Par défaut
    Alors je te conseil d'appendre le langage avant :

    http://tahe.developpez.com/dotnet/csharp/


    Sinon pour une property c'est par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public DropDownList getDDL
    {
       get
       { 
          return _ddl
       }
       set
       {
          _ddl = value;
       }
    }
    
    Envie de contribuer à la rubrique SharePoint ? Contactez moi par MP !

    SharePoint : http://sharepoint.developpez.com
    Mon site : http://lefortludovic.developpez.com
    Mon blog : http://www.consultpoint.net/blog

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 68
    Par défaut
    C'est bien ce que j'avais fait, mais quand j'essaye d'y accéder dans ma content page par this.Master.getDDL, il ne reconnait pas getDDL, alors que j'ai bien définit ma MasterPageFile Il doit me manquer quelques chose, je vais regarder en meme temps le lien que tu m'as envoyé.

  11. #11
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Par défaut
    le .Master renvoi un objet de type System.Web.UI.MasterPage
    La méthode getDLL ne se trouve pas dans un System.Web.UI.MasterPage mais dans ta page qui en hérite.

    Tu dois donc caster l'objet que tu reçois par le .Master dans le type de ta classe.
    Envie de contribuer à la rubrique SharePoint ? Contactez moi par MP !

    SharePoint : http://sharepoint.developpez.com
    Mon site : http://lefortludovic.developpez.com
    Mon blog : http://www.consultpoint.net/blog

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 68
    Par défaut
    Ah c'est génial, ca marche !!!

    Merci beaucoup pour votre aide et en particulier LefortLudovic pour ta solution.

  13. #13
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Par défaut
    Pas de souci, c'est avec plaisir
    Envie de contribuer à la rubrique SharePoint ? Contactez moi par MP !

    SharePoint : http://sharepoint.developpez.com
    Mon site : http://lefortludovic.developpez.com
    Mon blog : http://www.consultpoint.net/blog

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/02/2005, 18h07
  2. Comment retourner une table !
    Par ptidoudou02 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 14/12/2004, 14h46
  3. fonction retournant une valeur
    Par ryan dans le forum ASP
    Réponses: 4
    Dernier message: 06/09/2004, 17h45
  4. Retourner une valeur avec une fonction
    Par stephtbest dans le forum ASP
    Réponses: 4
    Dernier message: 31/10/2003, 16h37
  5. [MFC] Retourner une liste d'objets
    Par 1cado dans le forum MFC
    Réponses: 10
    Dernier message: 28/07/2003, 12h11

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