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 :

Interaction Javascript et C# dans une page ASP


Sujet :

ASP.NET

  1. #1
    Membre habitué Avatar de PatStan17
    Homme Profil pro
    Chef de projet / Développeur
    Inscrit en
    Décembre 2008
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2008
    Messages : 307
    Points : 155
    Points
    155
    Par défaut Interaction Javascript et C# dans une page ASP
    Bonjour

    J'ai un gridView que je paramètre en interacitf dans le code behind ...

    Dans ce gridview j'ai un ImageField

    Dans l’événement RowDataBound de ce gridview
    j'ajoute ces deux fonctions Javascript sur mon ImageField :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     if (Lgn.RowType == DataControlRowType.DataRow)
    {
     
                    string ClientID = Lgn.Cells[1].Controls[0].ClientID;
     
     
                    Lgn.Cells[1].Attributes.Add("onmouseover", "MontrePhoto(" + ClientID + ")");
                    Lgn.Cells[1].Attributes.Add("onmouseout", "CachePhoto()");
    }
    voici mes deux fonctions javascript :

    Code JavaScript : 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
     function MontrePhoto(IdImg)
            {           
                var Image = document.getElementById(IdImg);        
     
                var Chemin = Image.getAttribute("src");
                var x = event.clientX;
                var y = event.clientY;
     
                var LeCadre = document.getElementById('DivCadrePhotoPersonnel');
     
                LeCadre.style.display = "block";
     
                document.getElementById('PhotoPersonnel').setAttribute("src", Chemin);
                document.getElementById('PhotoPersonnel').CssClass = "ImgRonde70Px";
     
                LeCadre.style.position = 'absolute';
                LeCadre.style.left = (x + 150) + 'px';
                LeCadre.style.top = y - 50 + 'px';
     
                document.getElementById('PhotoPersonnel').CssClass = "ImgRonde70Px";
     
            }
     
            function CachePhoto()
            {
                document.getElementById('DivCadrePhotoPersonnel').style.display = "none";
            }


    L'objectif de tous ça et que quand mon utilisateur passe sa souris sur une photo en miniature (40px)
    dans le gridview elle apparaisse en grand à coté du curseur de la souris ...

    Quand j'utilise ces fonctions javascript sur des miniatures dans un tableau HTML ou autre cela fonctionne très bien.

    Quand j'essaye de les mettre en oeuvre dans un gridview qui se rempli à partir d'une BD et construit dynamiquement ça ne marche pas ...

    Quand je lance et que je regarde le débogueur de chrome j'ai ces messages :

    Uncaught TypeError: Cannot read property 'getAttribute' of null
    at MontrePhoto (GestionGroupeDeNiveau:55)
    at HTMLTableCellElement.onmouseover (GestionGroupeDeNiveau:241)
    Je précise que j'ai testé la valeur qui est envoyée à ma fonction MontrePhoto et elle correspond bien au ClientID du contrôle de
    mon gridview ou j'ai passé ma souris.


    Cela fait comme si document.getElementById(IdImg) ne renvoi rien ...


    J’espère avoir été clair ...
    Quelqu'un peut 'il me dépanner ?
    Yakatépé

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Je suppose que tu es en ASP.NET WebForms. Comment est-ce que tu definis la valeur du parametre IdImg pour la function MontrePhoto ? Est-ce qu'elle contient le bon ID ?

    Au runtime les IDs sont generes automatiquement par defaut. Il faut utiliser la propriete ClientId pour avoir le bon. Par exemple :
    Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var imageId = '<%= Image.ClientID %>';
    var img = document.getElementById(imageId);
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

Discussions similaires

  1. intégration de code javascript dans une page asp.net
    Par Je-cherche-pfe dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 06/09/2007, 17h10
  2. [CR 8.5] etat dans une page ASP / lien SQL serveur
    Par nicolak dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 08/06/2004, 11h19
  3. Appel de procédure dans une page ASP
    Par PrinceMaster77 dans le forum ASP
    Réponses: 5
    Dernier message: 02/04/2004, 16h59
  4. sécuriser le mot de passe dans une page asp
    Par Redouane dans le forum ASP
    Réponses: 2
    Dernier message: 10/03/2004, 21h16
  5. Réponses: 1
    Dernier message: 08/03/2004, 11h35

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