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 :

Déclencher évènement automatiquement après chargement de la page


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 5
    Points
    5
    Par défaut Déclencher évènement automatiquement après chargement de la page
    Bonjour,

    J'ai créé deux pages aspx. L'une est une image (créée en C#). L'autre est une page web qui contient cette image.
    Là où ça coince c'est que dans la première page (l'image) une variable de session est créée et cette variable je m'en sers dans la seconde page.
    Je dois donc attendre que la page image soit complètement exécutée pour pouvoir appeler cette variable de session dans la page web, sinon il est évident, j'obtiens une erreur de type NullRefereneException...comme quoi la variable de session n'existe pas.

    Comme solution d'attente j'ai créé un bouton sur la page web, quand l'utilisateur clique dessus ça appelle la variable de session et là donc elle a bien été créée auparavant et je peux l'utiliser.

    Mais moi je voudrai faire ça automatiquement sans que l'utilisateur ai à cliquer sur un bouton. J'ai beau retourner le problème dans tous les sens je ne parviens par à le faire. Avec différents contrôles, évènements (onload, onunload, ondisposed, onprerender...) j'obtiens toujours l'exception comme quoi la variable de sessions n'existe pas (= NULL).

    Dois-je passer par un évènement particulier ?
    Ou alors est-ce que je m'y prend mal ?

    Merci d'avance.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 619
    Points
    1 619
    Par défaut
    tu as le evenement pre_init ou init. mais tu veux faire quoi fonctionnellement?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Il me semble que ces deux évènements ne m'aide pas plus.

    En fait j'ai un disque (l'image) contenant des données de productions. Un tableau (pareto) contenant le résumé de ces données. Toutes les données (disque + pareto) sont créées dans la page image.aspx. Dans image.aspx j'ai une variable Session["monPareto"] qui contient les données du pareto qui sera affiché sur la page web (celle qui contient image.aspx). Je suis clair ou pas ? :/

    Image.aspx doit être éxécutée pour pouvoir afficher le pareto dans la page web car j'ai besoin que Session["monPareto"] ai été initialisée. Vous comprenez ?

    Mais je bloque totalement là.

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    C'est simple: Ca n'est pas possible
    Explication: Le client demande MaPage.aspx
    Le serveur execute tout le code de MaPage.aspx et effectue le rendu html de celle ci.
    Le serveur envoi le rendu. Dans ce rendu il y'a un <img src="MonImage.aspx" />
    Lorsque le navigateur du client recoit la page et voit le <img/> c'est a ce moment la qu'il fait la requete pour chercher MonImage.aspx sur le serveur.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 619
    Points
    1 619
    Par défaut
    j'avoue que je n'ai pas tout capté. ces données ne peuvent pas être mise dans un gridview et binder la datasource qui contiendrait tes données?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Merci Nathanael , c'est la réponse que je redoutais

    rattlehead, cela reviendrait au même puisque il faudra toujours attendre que la chargement de MaPage.aspx soit terminé. Et encore avec un clique de bouton aller tchecker le datasource.

    Juste une dernière question, peut être est-ce ma façon de fonctionner qui est mauvaise, une idée pour faire ça différemment ?

  7. #7
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par SaiYan02 Voir le message
    Juste une dernière question, peut être est-ce ma façon de fonctionner qui est mauvaise, une idée pour faire ça différemment ?
    Surement! Mais j'ai pas tout compris au problème

  8. #8
    Membre éclairé Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Points : 755
    Points
    755
    Par défaut
    Citation Envoyé par SaiYan02 Voir le message
    Il me semble que ces deux évènements ne m'aide pas plus.

    En fait j'ai un disque (l'image) contenant des données de productions. Un tableau (pareto) contenant le résumé de ces données. Toutes les données (disque + pareto) sont créées dans la page image.aspx. Dans image.aspx j'ai une variable Session["monPareto"] qui contient les données du pareto qui sera affiché sur la page web (celle qui contient image.aspx). Je suis clair ou pas ? :/

    Image.aspx doit être éxécutée pour pouvoir afficher le pareto dans la page web car j'ai besoin que Session["monPareto"] ai été initialisée. Vous comprenez ?

    Mais je bloque totalement là.
    si tu voulais exécuter image.aspx le premier, pourquoi n'est pas faire une redirection vers Mapage.aspx après avoir définit la Session?.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Ramajb Voir le message
    si tu voulais exécuter image.aspx le premier, pourquoi n'est pas faire une redirection vers Mapage.aspx après avoir définit la Session?.
    Parce que c'est MaPage.aspx qui appelle MonImage.aspx et pas l'inverse.

    Un peu de code vaudra mieux qu'un grand discours (juste des morceaux).

    MaPage.aspx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <asp:Image ID="myDisc" runat="server" ImageUrl="ImageDisc.aspx" Visible="false" />
     
    <asp:Button ID="ParetoButton" Visible="false" runat="server" Text="Charger Pareto" 
                                                onclick="ParetoButton_Click" />
                                            <br /><br />                                           
                                            <table border="1" width="340">
                                                <asp:Label ID="Pareto" Visible="False" runat="server" Text=""></asp:Label>
                                            </table>
    MaPage.aspx.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    protected void ParetoButton_Click(object sender, EventArgs e)
    {
        Pareto.Text = Pareto.Text + Session["monPareto"].ToString();
        Pareto.Visible = true;
        ParetoButton.Visible = true;
    }
    MonImage.aspx.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    tabPareto += "<tr align='center'><td><b>Total non filtrés</b></td><td>" + Fonctions.calduree(tempsTotalArretsNonFiltre * 10000) + "</td><td>" + cptArretsNonFiltre + "</td><td align=\"left\"><table><tr><td height=\"20\" width=\"100px\" bgcolor=\"#000099\"></td></tr></table></td></tr>";
                        tabPareto += "<tr align='center'><td><b>Total filtrés</b></td><td>" + Fonctions.calduree(tempsTotalArretsFiltre * 10000) +"</td><td>" + cptArretsFiltre + "</td><td></td></tr>";
                        Session["monPareto"] = tabPareto;
    Je sais pas si avec ça vous comprenez mieux ce que je veux faire.
    Merci pour votre aide

  10. #10
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Ben du coup ton code sert pas à grand chose
    C'est une description de ce que tu veux faire fonctionellement plutot qui serait necessaire. C'est quoi un Pareto?

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    C'est un tableau de données.

    En fait dans ImageDisc.aspx je lis un fichier texte qui contient des données de production.

    En même temps que je parcours ce fichier je créé mon disque (une image) de production. Et toujours en même temps je fais les calculs pour mon tableau. Car sur la page Disc.aspx(pas l'image l'autre) je veux avoir mon disque de prod et mon tableau qui résum la prod. Mais comme les données de prod sont contenues dans ImageDisc.aspx (normal c'est là que je lis le fichier) bah je bloque pour remplir mon tableau qui se situe dans Disc.aspx.

    Une autre solution serait de lire également le fichier dans Disc.aspx mais je trouve ça un peu "bourrin" et vraiment pas optimisé.

    Si j'ai fais ce choix d'avoir deux pages séparées (Disc et ImageDisc) c'est qu'il est apparemment impossible dans une WebForm de créer une image et la mettre dans un conteneur du style PictureBox et de "rester en page web". Je suis obligé de change l'en-tête de ma WebForm pour la faire passer comme image.

    ImageDisc.aspx.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Response.AddHeader("Content-Type", "image/jpeg");
    imageDisque.Save(Response.OutputStream, ImageFormat.Jpeg);
    Un mec a fait un contrôle permettant de le faire mais son contrôle est payant

  12. #12
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Personellement, j'aurais fait toute ma logique dans Disc.aspx et créé à la volée une image jpeg temporaire avec un nom unique (genre un guid). Apres tu fais un lien vers cette image.
    Le seul truc c'est qu'il faut implémenter une voiture balais pour vider les vieilles images à intervalles periodiques (genre toutes les heures).

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    C'est ce que j'avais fais au début mais je trouvais ça "sale"

    Je sens que ce bouton "Charger Pareto" va rester. Il est pas si mal finalement, je peux lui rajouter des petites fleurs. Et je suis sur que l'utilisateur est ravi de devoir intervenir et de faire joujou avec le bouton

    Plus sérieusement, je pense donc rester comme cela.
    Un autre problème m'attend, remplacer ce simple tableau html par un GridView (je pense?) et que les colonnes soient triables.

    Merci beaucoup pour votre aide et votre réactivité à mon problème.

  14. #14
    Membre éclairé Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Points : 755
    Points
    755
    Par défaut
    Une solution peut être:
    Dans l’événement Load du Mapage.aspx tu met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(Page.PreviousPage == null)
     {
        //Redirection vers MonImage.aspx. qui a son tour ferra une redirection vers Mapage.aspx.  (c'est du spaghetti mais bon :lol:)
     }else
    {
        //ici tu récupère la valeur de ta variable Session et faire d'autres traitement si besoin
    }.
    . Ou bien pour en etre si sur, tu ajoutes une autre condition pour dire que le traitement se fait uniquement quand le PreviousPage existe et dont l'url fait référence à MonImage.aspx. C'est jouable.

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Hm, c'est sale
    Et redondant.

  16. #16
    Membre éclairé Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Points : 755
    Points
    755
    Par défaut
    Oueh,
    Ma question est que: es tu obligé d'appeler directement Mapage.aspx le premier? parce que tu vois si ce n'est pas le cas, tu appel Monimage.aspx le premier dans laquelle tu fais une redirection vers Mapage.aspx.

    En gros, tu change 'l'url du lien qui te ramène vers Mapage.aspx à celui du Monimage.aspx. Comme ca si l'utilisateur click sur le lien, il se vois d'abord rediriger vers Monimage.aspx pour etre finalement sur Mapage.aspx.
    a+

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Oui je suis obligé de faire dans cet ordre car j'ai un TreeView dans MaPage.aspx qui détermine le fichier texte que je vais utiliser dans MonImage.aspx.

Discussions similaires

  1. [Dojo] Ajouter des elements dojo apres chargement de la page
    Par khattat dans le forum Bibliothèques & Frameworks
    Réponses: 10
    Dernier message: 29/07/2009, 08h51
  2. retour automatique apres clic dans une page
    Par coconiut dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/01/2009, 18h58
  3. Réponses: 2
    Dernier message: 20/11/2008, 19h13
  4. afficher un texte après chargement de la page
    Par klintistwood dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/04/2008, 19h01
  5. affichage d'une image apres le chargement de la page
    Par Krubi dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/04/2006, 16h44

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