2009-07-31 8 views
1

J'ai un contrôle utilisateur avec quelques listes déroulantes et un bouton, je veux que l'utilisateur clique sur le bouton (qui répond.redirects selon la sélection dans les DDL).Reporter le postback pendant 3 secondes?

Maintenant, au lieu de rediriger directement, je veux afficher une petite icône de chargement pendant 3 secondes, puis rediriger ... Quelqu'un at-il fait quelque chose comme ça?

+4

Ai-je fait quelque chose comme ça? Non, parce que c'est retardé. Mais si vous voulez le faire, c'est simple. Au lieu de rediriger, affichez la boîte de chargement et définissez une minuterie qui appelle votre fonction lorsque le minuteur est terminé. Facile. Mais inutile. – jrockway

+0

Est-ce que vous pouvez ainsi "optimiser" les pages de chargement lent plus tard? – RichardOD

+0

lol .. Je connais son boiteux, mais nécessaire comme un exemple – leen3o

Répondre

0

J'ai eu ce travail en utilisant

System.Threading.Thread.Sleep(4000); 

Dans le postback

1

Vous pouvez effectuer des retards avec la fonction setTimeout() en javascript.

setTimeout(function() { alert('After 5 seconds.'); }, 5000); 
0

Vous allez probablement avoir besoin de passer outre un couple de choses dans votre Javascript et d'utiliser un « setTimeout » pour retarder le chargement.

<script type="text/javascript" > 
    var __handleSubmit = theForm.submit; 
    theForm.onsubmit = function() { 
     alert('loading'); //Show your message here 
     window.setTimeout(function() { 
      __handleSubmit(); 
     }, 3000); 
    } 
</script> 

Vous pouvez jouer avec un peu plus ... cela peut ne pas fonctionner pour tous les cas depuis que je l'ai jamais fait.

Si le retard est simplement « esthétique », pour le faire apparaître qu'il fonctionne, alors je vous recommande contre - les programmeurs semblent être les seules personnes qui pensent les barres de chargement sont cool :)

3

Un retard artificiel où aucun n'est nécessaire est un peu boiteux. Ce que vous pouvez faire à la place est sur la soumission de votre formulaire afficher votre throbber. J'utilise ce qui suit sur un formulaire de téléchargement de documents où de gros fichiers multimédias sont affichés.

<script type="text/javascript" id="PreJavaScript"> 
    function NUsubmit(){ 
     document.getElementById("uploadFormInputs").style.display = 'none'; 
     document.getElementById("progressBar").style.display = 'block'; 
     return true; 
    }; 
    function init() { document.getElementById("UploadFormObject").onsubmit = NUsubmit; };    

    window.onload = init; 
</script> 

Si je me souviens bien, dans certaines versions de IE le GIF animé ne jouait pas, mais il a bien fonctionné dans IE6 + et FireFox. De cette façon, si la publication est rapide, ils ne voient jamais le battement, mais si cela prend un moment, ils le voient et cela leur donne l'impression que quelque chose se passe.

0

On dirait que vous devriez implémenter cette page en utilisant AJAX. Vous pouvez placer un indicateur de progression sur votre page pour alerter l'utilisateur qu'un processus de longue durée est en cours.