2010-05-19 16 views
1

J'ai un répéteur de données dans la page ASP.NET. Il charge beaucoup de choses et il faut 4 à 5 secondes pour afficher les images. Je ne peux pas faire de page ou obtenir une partie des éléments dont j'ai besoin pour afficher toutes les données, j'ai donc besoin d'un message de chargement ou de gif, mais comment puis-je faire cela? Quelqu'un peut-il m'aider?Comment puis-je afficher "Chargement ..." lorsque le répéteur obtient des données

Merci

Répondre

1

Si votre scénario n'est pas ajax une (forme classique postback ou navigateur est redirigé par lien clic) J'insérer gif animé dans la mise en page html juste avant la redirection/republier (div caché est illustré ou quelque chose comme ça). AFAIK cette approche aura des problèmes avec les anciens navigateurs (l'animation sera gelée)

Une autre approche est appelée page-processor?. Le navigateur est redirigé vers la page intermédiaire qui affiche l'animation pendant le chargement de la page demandée.

Vous pouvez également envoyer du code javascript à partir du serveur (Response.Write/Response.Flush) qui va animer votre page actuelle.

Je conseille également de bloquer/cacher le contrôle de l'interface utilisateur comme "envoyer le formulaire" pour refuser deux fois l'utilisateur impatient de cliquer si le serveur répond trop longtemps.

+0

Le scénario est; l'utilisateur sélectionne un type, puis sélectionne les types de types sélectionnés et une saison, puis la page affiche les éléments avec ce filtre. Ce que je voulais faire est quand le repeater est la page de connexion de données doit être verrouillé et charger un chargement gif afin que l'utilisateur puisse comprendre son chargement Désolé pour mon mauvais anglais :) – Xenon

0

Utilisez une iframe. Essentiellement, vous pouvez ouvrir une page en cours d'exécution lente dans un iframe et utiliser les événements déclenchés par l'iframe pour afficher une image de chargement.

<script type="text/javascript"> 

var t; 

//on iframe state change display or hide the loader tag 
function readyStateChanged(state) 
{ 
    if (state == 'complete' || state == 4 || state == '4' || state == 'Complete') 
    { 
     //hide the loader 
     document.getElementById('loader').style.display = 'none'; 
     clearTimeout(t); 

    } else 
    { 
     //diaplay the loader 
     document.getElementById('loader').style.display = ''; 

     //hide the loader if the iframe never loads 
     t = setTimeout("hideLoader()", 5000); 
    } 
} 


//hide the loading tag 
function hideLoader() 
{ 
    document.getElementById('loader').style.display = 'none'; 
    clearTimeout(t); 
}  
</script> 


<div id="loader" style="display: none;"><img />loading...</div> 

<iframe id="frameX" src="your_page.aspx" width="100%" height="400px" onload="hideLoader();" onreadystatechange="readyStateChanged(this.readyState);" ></iframe>