none
Comment stopper un Timer ajax très rapide ? RRS feed

  • Question

  • Bonjour,

    Je travaille actuellement sur asp.net et j'utilise un controle Timer ajax, j'ai mis la propriété interval à la valeur 10 (très rapide) et dans ce cas j'arrive jamais à stopper mon timer à travers un bouton ! Par contre dans un windows form y'a pas de souci.

    Quelqu'un a une solution ?

    Merci beaucoup
    dimanche 19 juin 2016 13:27

Réponses

  • Bonjour,

    Faudrait voir votre code mais à priori, le clic sur le bouton, ca doit être du code javascript, par du code behind côté serveur.

    Quand votre timer ajax est activé (au chargement de la page), il déclenche un appel ajax vers le serveur toutes les 10ms.

    Si vous cliquez sur le bouton et que c'est du code serveur qui est exécuté, alors votre page est posté vers le serveur qui renvoi la page (et avec le timer qui est à nouveau activé).

    Donc il faut mettre un event côté client sur le clic et désactivé le timer.


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    • Marqué comme réponse MohanedAmine lundi 20 juin 2016 11:24
    lundi 20 juin 2016 06:25
  • Affiche la console développeur pour voir ce qu'il se passe exactement (F12).

    Regardes surtout ce qu'il se passe sur le réseau.

    Et ajoute un Console.log dans tes events javascript


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    • Marqué comme réponse MohanedAmine lundi 20 juin 2016 14:44
    lundi 20 juin 2016 11:43

Toutes les réponses

  • Bonjour,

    Faudrait voir votre code mais à priori, le clic sur le bouton, ca doit être du code javascript, par du code behind côté serveur.

    Quand votre timer ajax est activé (au chargement de la page), il déclenche un appel ajax vers le serveur toutes les 10ms.

    Si vous cliquez sur le bouton et que c'est du code serveur qui est exécuté, alors votre page est posté vers le serveur qui renvoi la page (et avec le timer qui est à nouveau activé).

    Donc il faut mettre un event côté client sur le clic et désactivé le timer.


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    • Marqué comme réponse MohanedAmine lundi 20 juin 2016 11:24
    lundi 20 juin 2016 06:25
  • Merci bien pour la réponse rapide :)

    J'ai fais comme t'as dis et ça marche sauf que l’arrêt de timer ne s'effectue qu'après une série successive des clics!

    voilà mon code :

    <%@ Page Title="" Language="C#" MasterPageFile="~/Master.Master" AutoEventWireup="true" CodeBehind="Page1.aspx.cs" Inherits="WebAppTEST.Pages.Page1" %>
    
    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <asp:Timer ID="Timer1" runat="server" Interval="10" OnTick="Timer1_Tick"></asp:Timer>
    
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Timer1" />
            </Triggers>
            <ContentTemplate>
                
                
                <asp:Button ID="Button1" runat="server" Text="Start" onclientclick="startTimer()" />
                <asp:Button ID="btnStop" runat="server" Text="Stop" onclientclick="stopTimer()"/>
                <br />
                <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    
            </ContentTemplate>
        </asp:UpdatePanel>
    
        <script>
            function startTimer()
            {
                var timer = $find("<%=Timer1.ClientID%>")
                timer._startTimer();
            }
            function stopTimer()
            {
                var timer = $find("<%=Timer1.ClientID%>")
                timer._stopTimer();
            }
        </script>
    
    </asp:Content>
    	static int i = 1;
            protected void Timer1_Tick(object sender, EventArgs e)
            {
                this.Label1.Text = i.ToString();
                i++;
            }

    merci beaucoup

    lundi 20 juin 2016 11:39
  • Affiche la console développeur pour voir ce qu'il se passe exactement (F12).

    Regardes surtout ce qu'il se passe sur le réseau.

    Et ajoute un Console.log dans tes events javascript


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    • Marqué comme réponse MohanedAmine lundi 20 juin 2016 14:44
    lundi 20 juin 2016 11:43