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 avec mon timer [Débutant]


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Problème avec mon timer
    j'ai un script manager sur ma page aspx dans lequel j'ai un update panel. Et dans ce update panel j'ai un décompteur de temps qui fonctionne parfaitement mais il se trouve que lorsqu'un postback de la page est exécuté, mon compteur s'arrête pour un moment. Par exemple lorsque je clique sur un bouton mon timer s'arrête pour un moment avant de continuer son décompte. Quelqu'un pourrait m'aider à remédier à ce problème ?? Merci d'avance.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Fais tu un callback ou un postback ? si c'est un postback c'est normal vu que tu rafraichis la page...

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    vu que je sais pas ce que c'est un callback je suppose que c'est un postback. Mais en toute sincérité je sais pas.
    S'il te plait tu peux m'éclairer là dessus ? je te montre mon code au cas où
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true">
                                    </asp:ScriptManager>
                                        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                                             <ContentTemplate><%--
                                                       <asp:Timer ID="Timer1" runat="server" Interval="1000" ontick="Timer1_Tick">--%>
                                                       <asp:Timer ID="Timer2" runat="server" Interval="1000" ontick="Timer2_Tick">
                                                        </asp:Timer>
     
                                                     <asp:Label ID="LabelH3" runat="server" Text=""></asp:Label>
                                                </ContentTemplate>
                                        </asp:UpdatePanel>
    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
     
    static string span;
     protected void Timer2_Tick(object sender, EventArgs e)
            {
                span = LabelH3.Text;
     
                decompte1();
                if (LabelH3.Text == TimeSpan.FromSeconds(0).ToString())
                {
                    span = TimeSpan.FromSeconds(3600).ToString();
                    string st = (TimeSpan.FromSeconds(3600) - TimeSpan.Parse(LabelH3.Text)).ToString();
                    Timer2.Enabled = false;
                    //Response.Redirect("Resultat.aspx?Lib=" + recupLib + "&&idS=" + recupId + "&&nbV=" + nbreBonneRep + "&&nbF=" + nbreFausseRep + "&&limit=" + nb + "&&tps=" + st);
     
                }
                if (TimeSpan.Parse(LabelH3.Text) <= TimeSpan.FromMinutes(10)) 
                    LabelH3.ForeColor = Color.Red;
     
            }
     
            #region méthodes
     
                void decompte1()
            {
                LabelH3.Text = TimeSpan.Parse(span).Add(TimeSpan.FromSeconds(-1)).ToString();
                // string span = Convert.ToDateTime(LabelH1.Text).Hour.ToString();
            }
     
     
            #endregion

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Comme ca je ne vois pas mais que veux tu faire exactement ?

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    je développe un simulateur d'examen. Pour ce faire, j'ai un chrono(fixé à 3600 sec) qui va faire le décompte de temps que j'ai mis dans un update panel. Le reste de ma page contient des QCM. Or, il se trouve que j'ai des boutons suivant et précédent pour aller à la question suivante et/ou précédente sur ma page; et à chaque fois que j'appuie sur l'un des boutons, mon chrono (timer) se suspend pour quelques instants avant de continuer. Ce que je veux donc faire c'est de permettre à ce que mon chrono ne s'arrête plus mais effectue son décompte sans aucune pertubation

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Citation Envoyé par djoonzv Voir le message
    je développe un simulateur d'examen. Pour ce faire, j'ai un chrono(fixé à 3600 sec) qui va faire le décompte de temps que j'ai mis dans un update panel. Le reste de ma page contient des QCM. Or, il se trouve que j'ai des boutons suivant et précédent pour aller à la question suivante et/ou précédente sur ma page; et à chaque fois que j'appuie sur l'un des boutons, mon chrono (timer) se suspend pour quelques instants avant de continuer. Ce que je veux donc faire c'est de permettre à ce que mon chrono ne s'arrête plus mais effectue son décompte sans aucune pertubation
    Je ne pense pas que ce soit la bonne façon de faire. A ta place je stockerais plutot l'heure de de début d'examens et je garderais le timer juste pour faire le decompte...(DateTime.Now - dateDebutSession) et lorsque le totalsecond est > que 3600 la session est terminée...

    (dateDebutSession.AddHour(1) - DateTime.Now).TotalSeconds = le temps restant...

    Ton timer n'est plus la que pour afficher le temps restant dans ton label...

    [EDIT]
    Tu pourrais aussi le faire uniquement en JS mais le problème c'est que quelqu'un pourrait via la console du navigateur modifier ton décompte....

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    en recherchant les détails sur le callback et le postback j'ai compris que le update panel sur le timer fesait simplement un callback alors que les clicks sur les autres boutons de ma page déclenchaient le postback de toute la page. De plus, dans mon update panel je n'avais pas précisé le UpdateMode=Conditional c'est pourquoi tout événement perturbait le bon fonctionnement de mon timer. J'ai donc ajouté un un autre update panel et ensuite j'ai précisé pour chacun de mes update panel la propriété UpdateMode=Conditional.
    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
     
    <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
                                             <ContentTemplate>
                                                       <asp:Timer ID="Timer2" runat="server" Interval="1000" ontick="Timer2_Tick">
                                                        </asp:Timer>
     
                                                     <asp:Label ID="LabelH3" runat="server" Text=""></asp:Label>
                                            </ContentTemplate>
    </asp:UpdatePanel>
     
    <asp:UpdatePanel ID="UpdatePanel2" UpdateMode="Conditional" runat="server">
                                             <ContentTemplate>
     
                                            </ContentTemplate>
    </asp:UpdatePanel>
    [EDIT 1]
    Et maintenant ça fonctionne correctement.

    [EDIT 2]
    Citation Envoyé par Dokho1000 Voir le message
    Je ne pense pas que ce soit la bonne façon de faire. A ta place je stockerais plutot l'heure de de début d'examens et je garderais le timer juste pour faire le decompte...(DateTime.Now - dateDebutSession) et lorsque le totalsecond est > que 3600 la session est terminée...

    (dateDebutSession.AddHour(1) - DateTime.Now).TotalSeconds = le temps restant...

    Ton timer n'est plus la que pour afficher le temps restant dans ton label...
    C'est ce que je fais avec ma variable span. Dans span je met le temps à décompter ensuite je l'insère dans mon label puis je soustrait à chaque fois l'heure de mon label d'une seconde à l'aide de mon timer.

    La méthode avec JS je l'avais aussi déjà exploré avant les update panel et le problème avec ce code c'était que tout rechargement de la page réinitialisait mon décompteur. Je te remercie beaucoup pour ton aide Dokho

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

Discussions similaires

  1. Problème avec mon service mysql et PhpMyAdmin
    Par Fixazo dans le forum Outils
    Réponses: 1
    Dernier message: 28/08/2005, 18h02
  2. problème avec mon lecteur CD
    Par leo13 dans le forum Périphériques
    Réponses: 3
    Dernier message: 16/08/2005, 11h21
  3. [Thread] Probleme avec mon Timer
    Par Nico66 dans le forum EDT/SwingWorker
    Réponses: 10
    Dernier message: 02/06/2005, 17h10
  4. [Débutant]Problème avec les timers
    Par mickael777 dans le forum MFC
    Réponses: 1
    Dernier message: 11/04/2005, 11h00
  5. Problème avec mon firewall ...
    Par Wis dans le forum Tomcat et TomEE
    Réponses: 15
    Dernier message: 06/04/2004, 08h46

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