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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 !

+ 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