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éder à un Div dans un composant utilisateur à partir d'un autre composant utilisateur


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    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 : 55
    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
    Par défaut Accéder à un Div dans un composant utilisateur à partir d'un autre composant utilisateur
    Bonjour tout le monde.

    Là, je suis confronté à un souci d'accés. Je dois me gourrer de pas grand chose, mais je suis paumé ! Je vais essayer de présenter la chose de la manière la plus simple, mais le système est complexe par lui même. Je vais mettre des morceaux de code en espérant pas trop sabrer tout en essayant de ne pas trop tartiner.

    D'abord la page côté HTML :
    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
    <%@ Page Title="" Language="VB" MasterPageFile="~/MasterPage/Generale.master" AutoEventWireup="false" CodeFile="DetailGig.aspx.vb" Inherits="Navigation_DetailGig" %>
     
    <asp:Content ID="Content1" ContentPlaceHolderID="cphHead" Runat="Server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="cphEntete" Runat="Server">
        <Composite:MenuNav ID="menu" runat="server" />
    </asp:Content>
    <asp:Content ID="Content3" ContentPlaceHolderID="cphGauche" Runat="Server">
        <Composite:DetailGig ID="DetailGig" runat="server" />
    </asp:Content>
    <asp:Content ID="Content4" ContentPlaceHolderID="cphCentral" Runat="Server">
        <Composite:ListeCategorieGig ID="listeCateg" runat="server" />
    </asp:Content>
    <asp:Content ID="Content5" ContentPlaceHolderID="cphPied" Runat="Server">
    </asp:Content>
    Elle est liée à une MasterPage, donc trés classique. Je n'ai pas de CodeBehind.

    Ensuite, dans le composant utilisateur MenuNav j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <ajax:UpdatePanel ID="upSing" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
        <Triggers>
            <ajax:AsyncPostBackTrigger ControlID="lbSign" EventName="Click" />
        </Triggers>
        <ContentTemplate>
            <div id="divFondSign" runat="server" style="display:none;" class="FondOpaque">
            <div id="divDevantSign" class="DivSignIn">
            <asp:LinkButton ID="lbCloseLogin" runat="server" Text="Close"></asp:LinkButton>
            <asp:Login ID="logC" runat="server" ></asp:Login>
            </div>
            </div>
        </ContentTemplate>
    </ajax:UpdatePanel>
    Ce code permet d'avoir un lien en haut de page pour se loguer. Si on clique, la page devient opaque et une mire de connexion apparait. On entre ce qu'il faut et on est connecté.

    Et dans le composant DetailGig j'ai un lien sous cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:LinkButton ID="lbContact" runat="server"></asp:LinkButton>
    Et le CodeBehind suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Protected Sub lbContact_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lbContact.Click
            If Profile.IsAnonymous Then
                Dim div As HtmlControls.HtmlControl = Page.FindControl("divFondSign")
                div.Style("Display") = "Block"
            Else
                Response.Redirect("~/Navigation/Contact.aspx?id=" & IdGig)
            End If
        End Sub
    L'idée est de tester si l'utilisateur est connecté ou pas avant de pouvoir faire un contact à un aute utilisateur.

    Mon souci arrive sur la ligne où je tente un accès au Div et le serveur me dit :
    La référence d'objet n'est pas définie à une instance d'un objet.
    Ce que je peux comprendre. Sauf que je ne trouve pas le moyen de pointer vers le Div qui se trouve dans le composant MenuNav.
    En gros, de ce que j'ai compris de mes investigations, c'est dans l'arborescence des contrôles que je me paume, mais quel est le bon chemin ?

    Voilà, si vous pouvez m'aider, c'est cool.

  2. #2
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Bonjour,

    L'erreur arrive sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim div As HtmlControls.HtmlControl = Page.FindControl("divFondSign")
    ?

  3. #3
    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
    Ton composant MenuNav doit exposer une propriété ReadOnly correspondant à l'ID de ta div.

    Ton composant DetailGig doit exposer une propriété DivId qui sera setté par ta page avec la valeur MenuNav.DivId (dans le Page_Load par exemple)

    Ainsi, dans le code behind de DetailGig, tu te serviras de cette propriété pour retrouver ta div.

  4. #4
    Membre expérimenté
    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 : 55
    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
    Par défaut
    @ Jacky01 : non, la ligne d'en dessous

    @ LuteceFaclo : j'ai pas tout compris, mais je vais essayer de mettre en place ce que tu dis.

    @ tous les deux : MERCI

  5. #5
    Membre expérimenté
    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 : 55
    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
    Par défaut
    Je confirme : j'ai rien compris !

    Alors premier problème : comemnt on fait une propriété ReadOnly ?
    Ensuite : quel type je lui donne ? Parce que String, visiblement, ça marche pas bien.
    Egalement, setter la propriété d'un composant sur l'autre, j'ai du mal à suivre, certainement parce que je vois pas bien le type de la chose.

    Enfin, une fois dans le code, pendant le test du Porfil j'appelle quoi ? La propriété directement ou je fabrique nue objet qui sera mon DIV ?

    Désolé de pas arriver à suivre mais là, ça fait appel à des notions qui me manque, je crois.

  6. #6
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    j'avoue que je n'est pas tout a fait compris la solution de lutecefalco. (cela ne veux pas dire qu'elle n'est pas bonne évidemment )

    A ta place je me mettrais en débug et ferais le chemin à bas e de

    this.parent.findcontrol(..) etc...

    ainsi tu récupère grace aux espions le type de chaque parent et tu peu naviguer comme ca. En plus tu peu même tester tes cast au passage.

    Voilà celà n'engage que moi mais j'aurais procédé ainsi.

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

Discussions similaires

  1. [XL-2007] Créer du code dans le classeur A à partir d'un autre classeur B
    Par geo909 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/05/2009, 17h36
  2. Réponses: 2
    Dernier message: 05/01/2009, 12h45
  3. Comment accèder aux composants graphique à partir d'un autre thread ?
    Par PerpetualSnow dans le forum Windows Forms
    Réponses: 6
    Dernier message: 07/03/2007, 11h11
  4. Réponses: 3
    Dernier message: 19/06/2006, 10h26
  5. Réponses: 2
    Dernier message: 25/03/2005, 09h23

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