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 :

Problème update panel et javascript


Sujet :

ASP.NET

  1. #1
    Membre éclairé Avatar de ralf91
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 419
    Par défaut Problème update panel et javascript
    Bonjour,

    voila j'ai un problème avec l'update panel lorsque j'utilise du javascript !!! je vous mets d'abord mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <asp:Timer ID="Timer1" OnTick="Timer1_Tick" runat="server" Interval="6000"></asp:Timer>
    <asp:UpdatePanel ID="updatePanelGridView" runat="server" UpdateMode="Conditional">
            <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
            </Triggers>
            <ContentTemplate>
                <asp:Label ID="lbl" runat="server"></asp:Label>
                <asp:Literal ID="litJS" runat="server"></asp:Literal>
             </ContentTemplate>
    </asp:UpdatePanel>
    mon code derrière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    protected void update()
        {
            litJS.Text = "<script type=\"text/javascript\">";
            litJS.Text += "document.getElementById('lbl').innerHTML=\"" + DateTime.Now.Second + "\";";
     
            litJS.Text += "</script>";
    }
     
    protected void Timer1_Tick(object sender, EventArgs e)
        {
            update();
        }
    lorsque j’exécute ce code la première fois il m'affiche bien la seconde mais après les 6 sec il ne m'affiche plus rien ???!

    je voudrais savoir pourquoi ?

  2. #2
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Bonjour,

    Le problème vient surement de l'ID de ton label. Si tu regarde le code HTML généré, tu verras que celui-ci n'est pas le même.

    Si tu es sous ASP.NET 4.0, je t'invite à regarder cette nouveauté bien utile pour gérer plus finement la génération des ID lors du rendu HTML

    En espérant t'avoir aidé.

  3. #3
    Membre éclairé Avatar de ralf91
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 419
    Par défaut
    Ben non justement je dois utiliser le 3.5 (ce qu'ils ont installé dans l'entreprise).

    Pour le ID ben je ne vois pas où est le problème j'ai "lbl" en plus c pour que j'ai choisi un id court pour ne pas me tromper !!!

  4. #4
    Membre confirmé Avatar de Yosko
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2008
    Messages : 61
    Par défaut
    Ce que voulait dire Nicolas Esprit, c'est que l'ID "lbl" que tu as donné est un ID "serveur", côté ASP. Côté client, l'ID est géré automatiquement et est différent. Hélas, Javascript ne connait pas l'id serveur et ne peut donc pas trouver l'élément d'ID "lbl".

    Il faut donc procéder ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    litJS.Text += "document.getElementById('<%= lbl.ClientID %>').innerHTML=\"" + DateTime.Now.Second + "\";";
    Pour une explication plus détaillée, le lien fourni par Nicolas explique l'avant et l'après ASP.NET 4.0. Je t'invite à y jeter un oeil.

  5. #5
    Membre éclairé Avatar de ralf91
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 419
    Par défaut
    Et pourquoi il le reconnait la première fois alors ? car le premier appel de la fonction update il m'affiche bien la seconde dans le label ensuite après 6sec lorsque l'update panel se rafraîchi c'est là que ça ne marche plus (il ne m'affiche rien) ?? j'ai essayé ton code et ça ne fonctionne toujours pas :s

    en revanche j'ai trouvé une solution et ça a l'aire de bien fonctionner, au lieu d'utiliser le literal j'ai remplacer le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    protected void update()
        {
            litJS.Text = "<script type=\"text/javascript\">";
            litJS.Text += "document.getElementById('lbl').innerHTML=\"" + DateTime.Now.Second + "\";";
     
            litJS.Text += "</script>";
    }
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    protected void update()
        {
    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "update", "document.getElementById('lbl').innerHTML=\"" + DateTime.Now.Second + "\";", true);
    }
    Je crois qu'il y'a un problème de positionnement de mon code JS avec le literal.

  6. #6
    Membre confirmé Avatar de Yosko
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2008
    Messages : 61
    Par défaut
    Bon faut vraiment que j'apprenne à lire, si je veux aider les gens -___- ... Deuxième fois en 2 jours que je répond à côté de la plaque...
    Mon code, c'est pour du javascript en fait ^^'

    Du coup je ne vois pas trop pourquoi ça ne marche pas à partir du second coup. La première chose à vérifier serait de mettre un point d'arrêt pour vérifier :
    1. qu'il passe bien dans le code toutes les 6 secondes (et pas seulement la première fois)
    2. ce qu'il met vraiment comme valeur dans ton Literal


    Tu as sans doute tes raisons, mais pourquoi ne pas directement changer le text de "lbl" via ton ticker ? Genre comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected void Timer1_Tick(object sender, EventArgs e)
    {
        this.lbl.Text = DateTime.Now.Second;
    }

Discussions similaires

  1. [Débutant] [C#] Update Panel problème
    Par same66 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 28/06/2012, 14h49
  2. Problème avec Update Panel, Timer et Send Boutton
    Par youtpout978 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 06/05/2012, 12h32
  3. Update panel, multiview et javascript
    Par jbrasselet dans le forum ASP.NET
    Réponses: 0
    Dernier message: 05/01/2012, 08h58
  4. [Update]Problème update Eclipse
    Par tomate dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 05/04/2005, 11h14
  5. Problème UPDATE
    Par Eltaz dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/07/2004, 11h37

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