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 de la page avant d'executer le code


Sujet :

ASP.NET

  1. #1
    Membre habitué Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Points : 177
    Points
    177
    Par défaut [C#] Affichage de la page avant d'executer le code
    Bonjour,

    Je cherche un moyen pour que ma page s'affiche avant que le code ne s'execute.

    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
    protected void Page_Load(object sender, EventArgs e)
            {
                Session["MenuAccueil"] = String.Empty;
                Session["MenuHistorique"] = String.Empty;
                Session["MenuProfil"] = String.Empty;
                Session["MenuDeconnexion"] = String.Empty;
     
                if (!Fct.Securité.VérificationAuthentification(Session))
                {
                    FormsAuthentication.RedirectToLoginPage();
                }
                else
                {
                    try
                    {
                        Algorithmes.AlgorithmeIn();
                    }
                    catch (Exception exception)
                    {
                        if (exception.Message != "Le fichier envoyer n'est pas du texte.<br /> Veuillez vérifier la conformité de celui-ci.")
                        {
                            Outils.BugReport.Signaler("Le traitement n'a pas pu aboutir à cause d'un problème technique.", Priorité.Elevée, exception);
                            Session["Erreur"] = "Le traitement n'a pas pu aboutir à cause d'un problème technique.<br/>" + exception.Message + "<br/>. L'équipe technique en a été automatiquement informé.";
                        }
                        else
                        {
                            Session["Erreur"] = exception.Message;
                        }
                        Response.Redirect("Accueil.aspx");
                    }
                }
            }
    J'appel une fonction Algorithme.AlgorithmeIn() et je voudrais que celle-ci s'effectue une fois que l'utilisateur vois la page.

    Je ne sais pas si j'ai été clair. N'hésitez pas à me demandé plus d'infos si besoin est.

    Je vous remercie

  2. #2
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    A ma connaissance ce n'est pas faisable en ASP.Net... pourquoi ce besoin ?

  3. #3
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Bon, en fait, en faisant un peu de vaudou .Net, on peut (soit en faisant de l'asynchrone, soit en utilisant des Response.Flush) afficher la page avant la fin des traitements serveurs...

    Après, ce n'est pas forcément la solution, je plussoies la question d'Er3van

  4. #4
    Membre habitué Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Points : 177
    Points
    177
    Par défaut
    Merci de vos réponses,

    J'ai besoin de ceci car je choisi un fichier à uploader à partir de ma page "Accueil" par le composant FileUpload et une fois celui-ci choisit je commence donc l'upload et le traitement par un alogorithme plus ou moins long selon le fichier.

    Pour faire patienter l'utilisateur pendant le transfert et l'éxécution de l'algorithme, j'ai crée une page "Chargement" avec une animation. J'appel donc ma fonction AlgorithmeIn() dans le load de cette page mais mon problème est que la page s'affiche une fois que toutes les instructions contenues dans le load de la page sont effectuées.

    Je cherche donc une alternative afin que l'éxécution de ma fonction Algorithme s'effectue une fois la page "Chargement" affiché.

  5. #5
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Ok, dans ton cas, le mieux, c'est probablement le response.flush

    Tu peux faire qq chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Response.Clear();
     
    Response.Write("Vos données sont en cours de traitement, veuillez patienter..." );
    Response.Flush();
    MonOperationTresLongue();
    Response.Flush();
    Note, si ton utilisateur uploade un fichier de 200 Mo, il ne verra rien tant que le fichier n'a pas été transféré.

    Dans ce cas, le plus simple est de changer ton filupload par un AsyncFileUpload (http://www.asp.net/AJAX/AjaxControlT...ileUpload.aspx), et de gérer les evenements javascript (onclientuploadstarted/completed/error) pour afficher/masquer des divs sur la page, indiquant a ton utilisateur que le traitement est en cours

  6. #6
    Membre habitué Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Points : 177
    Points
    177
    Par défaut
    D'accord,

    Je vais essayer le contrôle AsyncFileUpload. Je pense qu'il conviendra parfaitement étant donnée que j'ai une animation en javascript afin de faire patienter l'utilisateur.

    Je vous tiens au courant dès que j'ai mis la solution en place.

  7. #7
    Membre habitué Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Points : 177
    Points
    177
    Par défaut
    J'ai installer le Ajax Control Toolkit afin d'utiliser le contrôle.

    Par contre lorsque je debug le programme visual studio me demande de lui trouver la classe nommée ScriptControlBase.cs.

    Je ne vois pas ce qu'es cette classe et ou je pourrai le trouver.

  8. #8
    Membre habitué Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Points : 177
    Points
    177
    Par défaut
    EDIT : au temps pour moi j'ai trouver il suffit de rajouter ce code dans l'entête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ Register TagPrefix="ajaxToolkit" Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" %>
    et celui-ci dans le form:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ajaxToolkit:ToolkitScriptManager runat="Server" EnablePartialRendering="true" ID="ScriptManager1" />

  9. #9
    Membre habitué Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Points : 177
    Points
    177
    Par défaut
    Je reviens vers vous.

    Je ne comprend pas comment utiliser le controle AsynFileUpload (je connais très peu le javascript ).

    Voilà mon code :

    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
    protected void Page_Load(object sender, EventArgs e)
            {
                Session["TempBodyOnLoad"] = "onload = \"charger()\"";
                Session["TempScriptChargement"] = "<script type=\"text/javascript\">"
                + "//<![CDATA["
     
                + "function charger()"
                + "{"
                + "setTimeout(\"changeretape('1b')\", 3000);"
                + "setTimeout(\"changeretape('1c')\", 6000);"
                + "setTimeout(\"changeretape('2b')\", 6000);"
                + "setTimeout(\"changeretape('2c')\", 9000);"
                + "setTimeout(\"changeretape('3b')\", 9000);"
                + "setTimeout(\"changeretape('3c')\", 12000);"
                + "setTimeout(\"changeretape('4b')\", 12000);"
                + "setTimeout(\"changeretape('4c')\", 23000);"
                + "setTimeout(\"changeretape('5b')\", 23000);"
                + "setTimeout(\"changeretape('5c')\", 26000);"
                + "}"
     
                + "function changeretape(code)"
                + "{"
                + "document.getElementById('et' + code.substring(0, 1)).src = './Images/etape' + code + '.gif';"
                + "if  (code == '5c')"
                + "{"
                + "document.getElementById('telescripteur').innerHTML = '<span id=\"LbInformation\">Conversion terminée.<br /><a href=\"./Accueil.aspx\">Cliquez-ici pour effectuer un nouveau traitement.</a></span>';"
                + "}"
                + "else"
                + "{"
                + "document.getElementById('telescripteur').innerHTML = '<span id=\"LbInformation\">Conversion en cours...</span>';"
                + "}"
                + "}"
                + "//]]>"
                + "</script>";
     
                Algorithmes.AlgorithmeIn();
                Algorithmes.AlgorithmeOut();
    }
    Et donc j'aimerai que la page s'affiche et éxécute ce javascript avant que les 2 fonctions AlgorithmeIn() et AlgorithmeOut() commencent leur traitement.

Discussions similaires

  1. script s'execute avant l'affichage de la page
    Par dvechamb dans le forum ASP.NET
    Réponses: 3
    Dernier message: 18/03/2012, 00h26
  2. Executer du code avant un changement de page
    Par Luke58 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 18/08/2009, 09h56
  3. Image d'attente avant affichage de la page
    Par Xenon03 dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 02/03/2009, 11h15
  4. [JDIC] modifier la page avant affichage
    Par iuz dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 16/07/2006, 15h36
  5. [MySQL] Affichage page si requete executer
    Par Nicos77 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 09/12/2005, 15h47

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