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 :

Reprendre le clientId d'un controle créé en CodeBehind [Débutant]


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 : 53
    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 Reprendre le clientId d'un controle créé en CodeBehind
    Bonjour à tous.

    Je suis confronté à un souci dont je ne trouve pas la solution.
    Je crée des hyperlink avec du CodeBehind mais je dois récupérer un ClientId dans une fonction JavaScript. Sauf que le contrôle n'étant pas déclaré il ne me le trouve pas au bon moment.

    Voici comment je crée les HyperLink :
    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
     
    Dim LParam(0) As SqlParameter
            LParam(0) = New SqlParameter("MenuId", "2be1310f-a588-4423-a9c1-a1bea45c11cd")
            Dim dtMenu As DataTable = RetournerTableP("SELECT PageId, Target, Ordre_Menu FROM CORE_Menu_Composition WHERE MenuId = @MenuId ORDER BY Ordre_Menu", LParam)
            For Each dr As DataRow In dtMenu.Rows
                Dim hl As New HyperLink
                With hl
                    .Text = dr.Item("Target")
                    .NavigateUrl = ""
                    .ToolTip = dr.Item("Target")
                    .CssClass = "hlMenu"
                    .Attributes("onmouseover") = "ouverturemenu(this," & dr.Item("Ordre_Menu") & ");"
                    .Attributes("onmouseout") = "document.getElementById('menu" & dr.Item("Ordre_Menu") & "').style.display = 'none';"
                    .Attributes("name") = "hlMenu" & dr.Item("Ordre_Menu")
                    .Width = Unit.Pixel(250)
                    .ID = "hlMenu" & dr.Item("Ordre_Menu")
                End With
                divHyperLink.Controls.Add(hl)
            Next
    Et voici la fonction javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function retourfondnoir(indexdiv) {
            clearTimeout(iTimer);
            ouverturemenu(document.getElementById("<%= hlMenu1.ClientID %>"), 1);
            document.getElementById("menu" + indexdiv).style.display = "none";
        }
    Et donc il me renvoi le message suivant :
    Le nom 'hlMenu1' n'est pas déclaré.
    Je ne sais pas comment faire pour lui faire parvenir le bon ID au bon moment.

    Merci pour votre 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.

  2. #2
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,

    Où places-tu cette fonction javascript? À quoi binds-tu ta source de données?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  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 : 53
    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 Immobilis

    La fonction Javascript est placée dans la page elle même, côté HTML, en fin de code.
    Je comprends pas bien ta question sur la source de données : c'est mon server SQL ma source de données, mais je sens que c'est pas cette réponse que tu veux.
    Sinon, cette source de donnée me sert à générer un lien dans un menu. Le menu est animé avec un truc qui slide sur la largeur en fonction de la position de la souris. C'est la fonction javascript qui fait le slide mais je dois lui envoyer le clientId du div.

    Suis je 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.

  4. #4
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Citation Envoyé par zooffy Voir le message
    Suis je clair ?
    Oui, oui. Par contre, tu ne devrais pas pouvoir récupérer l'id de cette façon. Dans la mesure où ces contrôles sont créés dynamiquement, le moment où tu as besoin de récupérer cette information ne me semble pas correctement synchronisé avec le cycle de la page. Tout du moins ce n'est pas explicite.

    Autre chose, si tu as plusieurs liens, pourquoi assigner uniquement celui du premier à ta fonction javascript?

    Je vois plusieurs façons de résoudre ce "problème";
    1. Passer cet identifiant à la fonction javascript de la même façon que tu le fais pour la fonction "ouverturemenu" en utilisant "this". ;
    2. Générer le javascript en codebehind;
    3. Utiliser un literal dans la fonction javascript en lieu et place de
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      <%= hlMenu1.ClientID %>
      et assigner la valeur dans le code behind;
    4. Utiliser une méthode genre "GetHyperlinkId()":
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      function retourfondnoir(indexdiv) {
      	clearTimeout(iTimer);
      	ouverturemenu(document.getElementById("<%# GetHyperlinkId() %>"), 1);
      	document.getElementById("menu" + indexdiv).style.display = "none";
      }
    5. Mettre un attribut bidon pour le rechercher via du javascript. Par exemple, tu peux utiliser une classe de style et utiliser jQuery pour la retrouver facilement.
    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  5. #5
    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 : 53
    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.

    En fait, j'ai fait tout autrement en lisant ta question du pourquoi assigner le premier.
    En fait c'est parce qu'il est la référence du slide. Le menu compte 4 à 7 entrées. Le premier menu est toujours "accueil" et ne contient aucun sous menu, il sert juste à revenir à la première page du site.
    Du coup, je me suis dis que je pouvais le créer en dur, donc avec un ClientId fixe. Ensuite, je rajoute dans mon Div, par le codehind, les autres menus, avec leurs sous menus, et la fonction javascript qui ne sert qu'à faire revenir le slide sur le premier menu quand tu sors ta souris du menu de navigation peut trouver son point d'origine avec le ClientId fixe.

    Mais en même temps tes explications détaillées sont très interressantes, cela va certainement me service dans d'autre cas.

    Je dois pas être si débutant que ça alors......

    Une bonne journée à toi.
    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. [VB6] [Interface] Nbre de contrôles maxi dans une feuille
    Par Midou dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 13/10/2002, 16h09
  2. [VB6] [Interface] Tester le Type de Controle
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 16/09/2002, 09h51
  3. [controle] propriété read only
    Par Fizgig dans le forum Composants VCL
    Réponses: 6
    Dernier message: 28/08/2002, 10h30
  4. Rx Controls Gif animés
    Par toufou dans le forum Composants VCL
    Réponses: 6
    Dernier message: 23/08/2002, 14h09
  5. Reprendre une procedure dans une autre ?
    Par Poisson Rouge dans le forum Langage
    Réponses: 3
    Dernier message: 17/07/2002, 22h51

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