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

[C#] Affichage au fur et à mesure


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 122
    Points : 124
    Points
    124
    Par défaut [C#] Affichage au fur et à mesure
    Bonjour,

    J'ai un petit pb en ASP.NET:

    Comment faire pour afficher une page au fur et à mesur de son exécution.
    Ceci me sert lorsque j'effectue un traitement sur la page. J'aimerai d'abord qu'elle s'affiche (elle contient un message du genre "please wait") pour faire patienter l'utilisateur lors du traitement.


    J'ai cherché en vain sur ce forum et ailleurs la réponse à ma question.

    Merci!!

  2. #2
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut
    je ne sais pas comment faire.

    mais par contre, tu peux affiché un popup "veuillez patienter" et le fermer a la fin de ton traitement...

    pierre

  3. #3
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Tu peux faire un tonFormulaire.Visible=false au début puis tonFormulaire.Visible=true à la fin de l'affichage

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut Re: [C#] Affichage au fur et à mesure
    Citation Envoyé par joujou_le_fou
    ...Comment faire pour afficher une page au fur et à mesur de son exécution...
    C'est une fonctionnalité spécifique de ton appli donc c'est à toi de le concevoir et de le coder, à toi d'ordonner les evènement et leur rendu a l'ecran
    Essayes de nous détailler un cas d'exemple sous forme d'algo
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  5. #5
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Faire un truc du genre:

    Affichage("please wait")
    Traitements()
    Suppression("please wait")

    Il est possible de dire qu'il ne doit pas attendre d'avoir toute la page avant de l'envoyer mais je ne sais plus où

    Didier Danse

    Most Valuable Profesionnal SharePoint
    Microsoft Certified Application Developer
    Mes articles sur developpez.com
    Mon site perso


  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 122
    Points : 124
    Points
    124
    Par défaut
    Merci pour vos réponses.
    Je vais détailler un peu plus:

    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
     
    Page_Load(...)
    {
         Affichage_de_la_page();
     
         try
         {
              Traitement_des_donnees_que_je _recois()
              Response.Redirect(Page de fin de traitement);
         }
         catch(...)
         {
              Response.Redirect(Page d'erreur)
         }
    }
    Voilà grossomodo ce que je voudrais faire.
    Le problème est que je ne sais pas quoi mettre dans Affichage_de_la_page(). En effet, la page effectue le traitement, mais elle ne s'affiche pas.
    J'ai essayé de mettre un Response.Flush() avant le début du traitement, mais sans succès...

  7. #7
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par joujou_le_fou
    ...Le problème est que je ne sais pas quoi mettre dans Affichage_de_la_page(). En effet, la page effectue le traitement, mais elle ne s'affiche pas.
    ...
    Bien sûr que si puisqu'elle peut afficher un label "Please Wait"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Page_Load(...) 
    { 
         PleaseWait(); 
         try 
         { 
              Traitement_des_donnees_que_je _recois() 
              FinTraitement(); 
         } 
         catch(...) 
         { 
              Response.Redirect(Page d'erreur) 
         } 
    }
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 122
    Points : 124
    Points
    124
    Par défaut
    Ben écoute, je le pensais, mais PleaseWait() ne s'affiche que lorsque la page a fini le traitement, c'est à dire trop tard.

  9. #9
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    De base tout est envoyé en une fois... Je ne trouve vraiment plus où on change ça :s

    Didier Danse

    Most Valuable Profesionnal SharePoint
    Microsoft Certified Application Developer
    Mes articles sur developpez.com
    Mon site perso


  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 122
    Points : 124
    Points
    124
    Par défaut
    Je suis sûr que c'est ce dont tu ne te souviens plus Ditch...
    Moi aussi j'ai l'impression d'avoir su et d'avoir oublié

  11. #11
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Citation Envoyé par joujou_le_fou
    Je suis sûr que c'est ce dont tu ne te souviens plus Ditch...
    Moi aussi j'ai l'impression d'avoir su et d'avoir oublié
    Comme de quoi il vaut mieux "un tu sais que deux tu sauras"

    Didier Danse

    Most Valuable Profesionnal SharePoint
    Microsoft Certified Application Developer
    Mes articles sur developpez.com
    Mon site perso


  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 122
    Points : 124
    Points
    124
    Par défaut
    Citation Envoyé par Ditch
    Comme de quoi il vaut mieux "un tu sais que deux tu sauras"
    mdr

  13. #13
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Et si tu faisais l'appel de la procedure d'affichage PleaseWait() dans PageInit juste après InitializedComponent()
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 122
    Points : 124
    Points
    124
    Par défaut
    Le truc c'est que cette méthode est vide (elle n'existe meme pas).

    En fait, la page contient un label où y'a marqué "Traitement en cours".
    J'aimerai simplement que ce label s'affiche pendant le traitement.

    J'ai essayé de mettre un response.flush() à l'endroit que tu as indiqué, mais le résultat est toujours le meme

  15. #15
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Citation Envoyé par neguib
    Et si tu faisais l'appel de la procedure d'affichage PleaseWait() dans PageInit juste après InitializedComponent()
    Ca ne changera rien, on est toujours sur le serveur durant ce temps. Et toutes les infos seront quand même envoyées de la même manière

    Didier Danse

    Most Valuable Profesionnal SharePoint
    Microsoft Certified Application Developer
    Mes articles sur developpez.com
    Mon site perso


  16. #16
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par Ditch
    Citation Envoyé par neguib
    Et si tu faisais l'appel de la procedure d'affichage PleaseWait() dans PageInit juste après InitializedComponent()
    Ca ne changera rien, on est toujours sur le serveur durant ce temps. Et toutes les infos seront quand même envoyées de la même manière
    Alors dans ce cas il y la solution du timer crée à l'affichage de la page
    et le traitement se fait dans l'evenement tick du timer sans oublier de stopper le timer en fin de traitement
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 122
    Points : 124
    Points
    124
    Par défaut
    Citation Envoyé par neguib
    Alors dans ce cas il y la solution du timer crée à l'affichage de la page
    et le traitement se fait dans l'evenement tick du timer sans oublier de stopper le timer en fin de traitement
    Hum... Ca ne me semble pas très propre.
    J'ose espérer que les gars de chez crosoft ont prévu quelque chose de plus carré !

  18. #18
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Salut,

    Je pense pas que les gars de Microsoft aient prevu quoi que ce soit de plus carré, puisque le probleme est inhérent au protocole HTTP : ce n'est pas fait pour ce que tu souhaites faire, tout simplement. Une page Web n'est pas vraiment faite pour effectuer un traitement long sur le serveur Web, l'idée c'est plutot de pouvoir exécuter des petits traitements sur de nombreuses pages simultanément.

    J'imagine qu'une solution propre serait : ta page fais appel à un composant externe (genre un service windows) qui est chargé de lancer ton traitement lourd. Ensuite dans ta page coté client tu as du script qui se charge d'interroger régulierement le serveur Web (par un appel HTTP avec XmlHTTP par exemple) qui demandera au service Windows ou il en est, et renvoie cette information au client. C'est un peu lourd peut etre comme solution.

    Sinon du temps de l'asp classique je me souviens avoir fait ça avec des envoies réguliers au client d'informations par des Response.Buffer = False et des Response.Flush, mais il faut dire que la nature une peu bordélique de ce langage se pretait assez bien a ça . En Asp.net j'imagine qu'on doit encore pouvoir faire pareil, vu la nature "objet" de .Net ça va faire un peu crade, mais j'imagine que ça doit pouvoir marcher.

    EDIT : bon apres un petit test rapide, mes response.flush ne marchent pas, faut creuser...

  19. #19
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut
    une idee qui me vient!!
    attention c'est crade

    tu cré une page avec 2 frame.

    au debut du traitement tu affiche la premiere avec ton message. A la fin de ton traitement tu redefini la taille de tes frame avec javascript et tu affiche la deuzieme....

    j'avais prevenu ;-)

  20. #20
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par pmithrandir
    une idee qui me vient!!
    attention c'est crade

    tu cré une page avec 2 frame.

    au debut du traitement tu affiche la premiere avec ton message. A la fin de ton traitement tu redefini la taille de tes frame avec javascript et tu affiche la deuzieme....

    j'avais prevenu ;-)
    ah oui effectivement
    bon et ma solution avec timer elle est si crade que çà :
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AJAX] affichage au fur et à mesure
    Par zenzo dans le forum AJAX
    Réponses: 2
    Dernier message: 18/06/2010, 10h55
  2. Affichage des données au fur et à mesure d'un script
    Par muppetshow dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 19/02/2010, 12h20
  3. Réponses: 4
    Dernier message: 21/10/2009, 22h31
  4. Réponses: 0
    Dernier message: 13/06/2008, 14h36
  5. [Débutant] Affichage d'une courbe au fur et à mesure
    Par ordepedro dans le forum MATLAB
    Réponses: 5
    Dernier message: 13/01/2007, 15h55

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