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

  1. #1
    Candidat au Club
    Probleme de PostBack général avec un UpdatePanel d'AjaxToolKit et un timer
    Bonjour a tous,

    Je suis développeur dans une toute petite entreprise éditrice de logiciel :
    2 patrons, un qui développe, et l'autre qui commerce.
    1 formatrice
    et moi

    et nous travaillons en Asp.net WebForm.
    Je ne suis pas débutant en développement, seulement en client léger

    Nous utilisons AjaxToolKit

    Dans toutes nos solutions, nous avons une MasterPage qui contient différents ContentPlaceHolder

    Un entete (asp:Table) qui contient un update panel qui joue le role de l'horloge ...

    Code html :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <asp:UpdatePanel ID="test" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="False">
            <ContentTemplate>
                   <asp:Timer ID="Horloge" runat="server" Interval="10000" />
                   <asp:Label ID="EtiHeure" runat="server" />
            </ContentTemplate>
            <Triggers>
                 <asp:AsyncPostBackTrigger ControlID="HorlogeVirtuelle" EventName="Tick" />
            </Triggers>
    </asp:UpdatePanel>


    dans le code behind, l'evenement Tick de "Horloge"met a jour "EtiHeure"

    Le problème c'est qu'a chaque évènement tick, le postback est effectué sur toute la page.

    Ce qui est contenu dans les autres ContentPlaceHolder
    Par exemple, qd j'affiche un popup (avec un ModalPopupExtender), si j'attend les 10 secondes, il disparaît ....

    J'ai evidemment regardé sur Développez.com, puis sur differents forums.

    J'ai a peu près essayé toutes les solutions qui etaient proposées :

    en ajoutant le timer dans un autre UpdatePanel,
    en changeant le trigger,
    en changeant UpdateMode de Always à Conditional, etc...

    Mon patron y tient comme un fou a son horloge, et c'est pas un expert en Asp.Net

    Rien n'y fait ...
    Toujours le postback

    J'ai lu l'exellent tuto sur l'UpdatePanel : http://www.asp.net/Ajax/Documentatio...lOverview.aspx

    Un petits coup de main ?

    Merci d'avance

  2. #2
    Candidat au Club
    Resolution du pb avec JavaScript
    Re bonjour tout le monde,

    J'ai trouvé un article qui resout le pb via JavaScript
    http://www.supportduweb.com/scripts_...emps-reel.html

    Attention, la methode javascript devient :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    <script type="text/javascript">
            function date_heure(idctrl) {
     
                date = new Date;
     
                //annee = date.getFullYear();
                //moi = date.getMonth();
                //mois = new Array('Janvier', 'F&eacute;vrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Ao&ucirc;t', 'Septembre', 'Octobre', 'Novembre', 'D&eacute;cembre');
                //j = date.getDate();
                //jour = date.getDay();
                //if (jour == 1)
                //{
                //    jour = "1er";
                //}
                //jours = new Array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
                h = date.getHours();
                if (h < 10) {
                    h = "0" + h;
                }
                m = date.getMinutes();
                if (m < 10) {
                    m = "0" + m;
                }
                s = date.getSeconds();
                if (s < 10) {
                    s = "0" + s;
                }
                //resultat = jours[jour] + ' ' + j + ' ' + mois[moi] + ' ' + annee + '  ' + h + ':' + m;
     
                resultat = '' + h + ':' + m + ':' + s;
                var lbl = document.getElementById(idctrl);
     
                if (lbl == null) {
                    return false;
                }
     
                lbl.innerHTML = resultat;
                setTimeout('date_heure("' + idctrl + '");', '1000');
                return true;
            }
        </script>


    Mettre dans le Body de la master page :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    <body style="background-color: #124545;" onload="date_heure('<%= this.EtiHeure.ClientID%>');">



    Et tout va tres bien