2009-05-29 11 views
2

Dans notre application ASP.NET 3.5, nous aimerions implémenter une fonctionnalité "Veuillez patienter ...": à chaque action de l'utilisateur (clic sur le bouton, changement d'onglet , etc.) nous afficherions un petit fileur sur le dessus de la page (en fait dans un cadre séparé que nous utilisons déjà)."Veuillez patienter" image sur chaque action de l'utilisateur avec ASP.NET 3.5

Nous avons pensé à cette solution:

  1. "détournent" l'_doPostBack pour intercepter chaque événement, afficher l'image spinner, puis exécutez la fonction _doPostBack originale
  2. enregistrer un bloc de script client dans le ASP.NET codebehind pour cacher l'image lorsque le traitement se termine

Ma question est la suivante: pensez-vous qu'il est une bonne solution? ce n'est certainement pas très élégant mais ça fonctionne très bien. Y at-il une autre solution/modèle pour faire ce genre de chose?

PS: nous n'utilisons JQuery et nous utilisons UpdatePanels

Répondre

2

Puisque vous utilisez déjà UpdatePanels, il vous suffit d'ajouter un contrôle UpdateProgress à la page et l'associer à votre UpdatePanel.

Cela montrera automatiquement lorsqu'un postback partiel est initiée à l'intérieur du UpdatePanel et cache une fois que la demande est terminée.

Voici un exemple, il suffit de pointer la balise img à une image spinner. Vous pouvez positionner le contrôle là où vous voulez qu'il apparaisse.

<asp:UpdateProgress runat="server" AssociatedUpdatePanelID="updatePanel1"> 
    <ProgressTemplate> 
    <img src="./images/somespinner.gif" />Please wait... 
    </ProgressTemplate> 
</asp:UpdateProgress> 
-1

Je suis sûr que vous pouvez attacher des indicateurs de progrès au UpdatePanel. Soit par gestionnaire d'événements ou par propriété, je ne me souviens plus lequel, cela fait longtemps, j'utilise jQuery pas UpdatePanels.

Rich