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 :

MasterPage événement load et controles


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 95
    Points : 66
    Points
    66
    Par défaut MasterPage événement load et controles
    Bonjour,

    N'est-il pas possible,dans l'événement load d'une masterpage, d'accéder aux propriétés de controles du genre textbox ou image ?

    Je souhaite associer dans le load de ma masterpage un objet image à une image aléatoire (via la propriété imageUrl) et j'obtiens à l'exécution une exception "nullreferenceexception".
    Exemple de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.img_Logo.ImageUrl ="logo.jpg"
    Il en est de même si je tente de faire celà dans l'événement load d'une page héritant de ma masterpage en mettant un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim img As Image
     
            img = DirectCast(Me.Master.FindControl("Content").FindControl("img_Logo"), Image)
            img.ImageUrl = "logo.jpg"
    Mrci 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 : 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
    Si c'est tout à fait possible.
    T'es sûr que l'exception provient de la ligne que tu nous as montré?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 95
    Points : 66
    Points
    66
    Par défaut
    Bein j'en devient chèvre !

    prenons par exemple ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Dim img As Image
     
            img = CType(Me.Master.FindControl("imgTest"), Image)
            img.ImageUrl = "toto.jpg"
    C'est donc du code dans le load d'une page enfant.
    L'exception se produit sur la ligne "img.ImageUrl = "toto.jpg"

    Et les watch automatiques me montrent un objet img à nothing.

    J'ai recréé je sais pas combien de fois cet objet image "imgTest", en changeant son nom.

    J'ai aussi modifié la syntaxe de la seconde ligne avec des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    img = CType(Me.Master.findControl("Content").FindControl("imgTest"), Image)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    img = DirectCast(Me.Master.findControl("Content").FindControl("imgTest"), Image)
    ...

    Merci pour ton aide

  4. #4
    Membre actif Avatar de AJemni
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2008
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2008
    Messages : 242
    Points : 290
    Points
    290
    Par défaut
    Bonjour,
    peut tu nous montrer le code de ton page .master...


  5. #5
    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
    C'est "moche" ton code. C'est pas comme ça qu'on communique avec une MasterPage => http://lutecefalco.developpez.com/tu...-page-asp-net/

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 95
    Points : 66
    Points
    66
    Par défaut
    Avec plaisir, il est tout simple !

    Code behind
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Public Class web
        Inherits System.Web.UI.MasterPage
     
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            '//-/ Si la page n'est pas appelée dans le cadre d'un postback
            If Not Page.IsPostBack Then
                Me.AfficherTheme()
            End If
     
        End Sub
     
        '//-/ Affiche les éléments graphiques du site en fonction du thème sélectionné
        Private Sub AfficherTheme()
            Dim sLocal_DossierTheme As String '//-/ Contient le dossier racine des éléments graphiques du thème sélectionné
     
            '//-/ TODO : faire le renseignement du thème à partir du champ dédié dans la table de configuration + 
            '//-/ constantes associées
            sLocal_DossierTheme = "/Graphics/dynamic/themessite/Janvier/"
            '//-/ Barre de titre
            Me.imgLogo.ImageUrl = "toto.jpg"
     
        End Sub
    End Class

    Code aspx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    <%@ Master Language="VB" AutoEventWireup="false" CodeBehind="web.master.vb" Inherits="SiteInternet.web" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <link href="~/web/web.css" rel="Stylesheet" type="text/css" />
        <asp:ContentPlaceHolder ID="head" runat="server">
        </asp:ContentPlaceHolder>
    </head>
    <body ID="body" runat="server">
        <form id="form1" runat="server">
     
        <div>
            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            <div class="div_titre">
                <div class="div_titre_logo">
                    <asp:Image ID="imgLogo" runat="server" />
                </div>
            </div>
     
            <div class="div_contenu_main">
                <div class="div_contenu_gauche"></div>
                <div class="div_contenu_droite"></div>
            </div>
            </asp:ContentPlaceHolder>
        </div>
        </form>
    </body>
    </html>

    Et l'exception se produit donc sur :

    Me.imgLogo.ImageUrl = "toto.jpg"

    MErci

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 95
    Points : 66
    Points
    66
    Par défaut
    @lutecefalco

    Merci pour ton lien. Je connaissais la façon décrite dans ton lien mais je ne l'ai pas employée car je ne souhaite pas faire mon code dans toutes les pages enfants, mais dans mon masterpage.

    J'ai fait ce code moche (n'ayons pas peur des mots ) car il est rapide et il est uniquement là pour tester si ca marche mieux dans une fenêtre enfant.

    Il doit y avoir un truc gros comme un boeing mais je ne le vois pas

  8. #8
    Membre actif Avatar de AJemni
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2008
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2008
    Messages : 242
    Points : 290
    Points
    290
    Par défaut
    fait sortir les deux div de ton ContentPlaceHolder
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <div class="div_titre">
                <div class="div_titre_logo">
                    <asp:Image ID="imgLogo" runat="server" />
                </div>
            </div>
     
            <div class="div_contenu_main">
                <div class="div_contenu_gauche"></div>
                <div class="div_contenu_droite"></div>
            </div>
    <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
    </asp:ContentPlaceHolder>
    et ajoute une page de contenu à ton masterpage et essay de nouveau.


  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 95
    Points : 66
    Points
    66
    Par défaut
    Super, c'est ça.

    Si tu sais pourquoi (rapidement) ca me rendra moins couillon !

    Merci

  10. #10
    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
    Le fait de le mettre dans le contentplaceholder implique que ton control fera partie de la page fille et non de la master page

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 95
    Points : 66
    Points
    66
    Par défaut
    Vu que je n'ai jamais réussi à l'adresser dans ma fenêtre enfant, c'est juste une histoire de syntaxe (j'en ai pourtant essayé des kilomètres avec ces "findcontrol" tout moches !) ou il faut passer par une instantiation dans le code behind de l'enfant pour utiliser les controles dans ce cas ?

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

Discussions similaires

  1. Problème de scroll qui relance l'événement Loaded de mon control dans un datagrid
    Par slacky dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 14/12/2011, 10h17
  2. Activer/Désactiver évènements sur un control
    Par Titi41 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 13/06/2008, 10h28
  3. Probleme de Load User Control bizarre
    Par Contrec dans le forum C#
    Réponses: 15
    Dernier message: 29/08/2007, 10h31
  4. Problème avec les évènement de mes controle
    Par napegadie dans le forum VB.NET
    Réponses: 5
    Dernier message: 17/08/2007, 12h41
  5. Réponses: 3
    Dernier message: 05/11/2006, 11h42

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