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 Ajax Discussion :

problème de raffraichissement


Sujet :

ASP.NET Ajax

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 30
    Par défaut problème de raffraichissement
    Bonjour à tous,

    j'essaie de mettre en place un compte à rebours à l'aide d'ajax mais je n'y arrive pas. Mon problème est que j'ai une variable "Rebours" initialisée dans le Page_Load qui semble perdre sa valeur. Donc à chaque fois elle récupère la valeur 1minute et donc mon affichage reste statique avec mon décompte qui reste à 59secondes. En gros à chaque fois il décrémente d'une seconde mais il décrémente la même valeur sans jamais conserver le résultat. Je vous mets le code pour mieux comprendre.

    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
    public partial class _Default : System.Web.UI.Page
    {
        DateTime rebours = new DateTime();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                rebours = DateTime.Parse("2011/01/01 00:01:00");
     
            }
     
        }
     
        //protected void Button1_Click(object sender, EventArgs e)
        //{
        //    string fonction = "CountDown('60', 'label1')";
        //    string script = "<SCRIPT LANGUAGE='JavaScript'>" + fonction + "</SCRIPT>";
        //    Page.RegisterClientScriptBlock("CountDown", script);
        //}
        protected void Timer1_Tick(object sender, EventArgs e)
        {
            rebours = rebours.AddSeconds(-1);
            Label6.Text = rebours.Second.ToString();
            UpdatePanel1.Update();
     
        }
    coté aspx:

    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
    <div>
                            <asp:ScriptManager ID="ScriptManager1" runat="server">
                            </asp:ScriptManager>
     
                            <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                                <ContentTemplate>
                                    <asp:Timer ID="Timer1" runat="server" Interval="1000" ontick="Timer1_Tick"></asp:Timer>
                                    <asp:Label ID="Label6" runat="server" Text="Label"></asp:Label>
                                </ContentTemplate>
                                <Triggers>
                                    <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
                                </Triggers>
                            </asp:UpdatePanel>
     
     
                        </div>

    J'espère sincèrement que vous pourrez m'aider.
    Je vous remercie par avance.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 164
    Par défaut
    essaie de mettre ta variable "rebours" en statique

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 30
    Par défaut
    Citation Envoyé par tontonks Voir le message
    essaie de mettre ta variable "rebours" en statique
    Salut,

    merci pour ta réponse mais ca ne fonctionne toujours pas en "static". J'ai le même problème.

    Une autre solution peut-être? J'ai toujours pas réussi à résoudre mon problème.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 164
    Par défaut
    Bizarre ça car j'ai testé avec ceci :

    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
     
    static DateTime rebours = new DateTime();
     
            protected void Page_Load(object sender, EventArgs e)
            {
                DateTime time = DateTime.Parse("23/06/1945 0:00:00",null,System.Globalization.DateTimeStyles.AdjustToUniversal);
     
                if (!Page.IsPostBack)
                {
                    rebours = DateTime.Parse("2011/01/01 00:00:59");
                    Label6.Text = rebours.Second.ToString();
                }
            }
     
            protected void Timer1_Tick(object sender, EventArgs e)
            {
                rebours = rebours.AddSeconds(-1);
                Label6.Text = rebours.Second.ToString();
                UpdatePanel1.Update();
            }
    et ça marche.

  5. #5
    Membre très actif
    Profil pro
    Expert technique .NET
    Inscrit en
    Août 2007
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Expert technique .NET

    Informations forums :
    Inscription : Août 2007
    Messages : 272
    Par défaut
    C'est tout à fait normal : ASP.NET étant un langage web, le serveur ne garde pas trace des pages une fois sa réponse (donc la page) envoyée au client.
    Donc effectivement, ta variable rebours va se "réinitialiser" à chaque chargement.
    Si tu veux la garder, il faut la restaurer avant ton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rebours = rebours.AddSeconds(-1);
    Puis sauvegarde la ensuite.

    Par contre, ta solution me semble risquée : je pense que comme ta variable est statique, elle va être partagée avec tous les utilisateurs de ton site, ce qui est dangereux si tu souhaites qu'ils aient chacun un compte à rebours différent. Toutefois, je ne suis pas sûr de moi, il faudrait vérifier cela.

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/05/2006, 11h11
  2. Probléme de raffraichissement sous formulaire access
    Par roadster62 dans le forum Access
    Réponses: 4
    Dernier message: 27/03/2006, 16h44
  3. Problème de raffraichissement.
    Par kurul1 dans le forum OpenGL
    Réponses: 6
    Dernier message: 06/02/2006, 16h46
  4. Problème de raffraichissement de listes
    Par blondin01 dans le forum Access
    Réponses: 7
    Dernier message: 13/10/2005, 12h31
  5. [awt] Problème de raffraichissement de composant
    Par FakuFaku dans le forum AWT/Swing
    Réponses: 13
    Dernier message: 21/07/2005, 18h32

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