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 :

Ouverture doc + Chargement page


Sujet :

ASP.NET

  1. #1
    Membre régulier Avatar de Othana
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 188
    Points : 86
    Points
    86
    Par défaut Ouverture doc + Chargement page
    Pouet les gens !

    Donc, ici, je suis censé charger un doc pdf au click d'un bouton.
    seulement voilà, quand on entre dans la condition du if et qu'on recharge la page, le doc ne s'ouvre pas. obligé de cliquer une deuxième fois (donc relancer l'event) ; alors que, ZUT, l'ouverture est commandée AVANT le if !
    Donc ça devrait s'ouvrir AVANT de recharger cette de page
    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
    39
    40
    41
    42
    43
    44
    45
    46
            protected void IbLinkToDoc_Click(object sender, ImageClickEventArgs e)
            {
                iddocument = Session["ag"].ToString();
                Session["rf"] = getMd5Hash(Session["ci"].ToString());
                Session["dl"] = String.Format("http://www.monsite.com/lcsubscription/consultation.aspx?d={0}&s={1}&r={2}&m={3}", Session["dt"].ToString(), Session["s"].ToString(), Session["rf"].ToString(), Session["ml"].ToString());
                string docurl = null;
                string proxdir = @"D:\xxxxx\";
                string ecgsdir = @"D:\yyyyyy\";
                string girdir = @"D:\zzzzzz\";
                string docdir = "";
                string doc = "";
                switch (Session["tp"].ToString())
                {
                    case "gir":
                        doc = "ECG" + iddocument + ".PDF";
                        docdir = girdir;
                        break;
                    case "ecgs":
                        doc = "ECG" + iddocument + ".PDF";
                        docdir = ecgsdir;
                        break;
                    default:
                        doc = "ASF" + iddocument + ".PDF";
                        docdir = proxdir;
                        break;
                }
     
                docurl = docdir + doc;
     
                FileStream MyFileStream = new FileStream(docurl, FileMode.Open);
                long FileSize;
                FileSize = MyFileStream.Length;
                byte[] Buffer = new byte[(int)FileSize];
                MyFileStream.Read(Buffer, 0, (int)MyFileStream.Length);
                MyFileStream.Close();
                Response.ContentType = "application/pdf";
                Response.AddHeader("content-disposition", "attachment; filename= " + doc);
                Response.BinaryWrite(Buffer);
     
                if (!Tablesendmail.Visible && !TableForward.Visible)
                {
                    Tablesendmail.Visible = true;
                    TableForward.Visible = true;
                    Response.Redirect(Session["dl"].ToString());
                }            
            }
    Si quelqu'un y comprend quelque chose...

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 165
    Points : 241
    Points
    241
    Par défaut
    Bonjour,

    Comme tu le présentes, le doc PDF s'ouvre dans la page appelante non ?
    En ligne 44, tu as un "Response.Redirect" qui ne devrait pas fonctionner.

    Sinon, après la ligne 38, un "Response.End" permettra de stopper les traitements et donc afficher le PDF.

  3. #3
    Membre régulier Avatar de Othana
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 188
    Points : 86
    Points
    86
    Par défaut
    Le response.redirect fonctionne lui. et ça vaut mieux. Dans la variable de session est stocké une url. De ce côté là, tout est normal.
    Ce qui ne l'est pas, c'est que l'ouverture du PDF ne se fait pas, QUAND on entre dans le if (condition vraie, donc exécution du response).

    Lorsque le pdf est appelé, on a une fenêtre de choix normale : ouvrir avec, ou enregistrer.
    En tout cas, quand la redirection ne fait pas tout foirer.

  4. #4
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,

    Il faut choisir soit tu renvois un fichier et là tu mets le Response.End() après le Binary.Write soit tu fais une redirection. Tu ne peux pas faire les deux.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  5. #5
    Membre régulier Avatar de Othana
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 188
    Points : 86
    Points
    86
    Par défaut
    Je crois que vous n'avez pas compris.
    La redirection et l'ouverture de fichier sont deux choses DIFFÉRENTES.

    J'ai un bouton, qui lance l'event IbLinkToDoc_Click.
    Dedans j'y mets l'ouverture du fichier (qui n'est PAS une page web, mais un doc à télécharger) ET le rafraichissement de la page actuelle (le Redirection).

    Je vois pas comment être plus clair sur ce point.
    Mais si le rafraichissement peut se faire d'une autre manière que par une redirection, je suis preneur. J'en ai BESOIN, car à l'ouverture du fichier, je dois AUSSI changer l'état de certains contrôles dans ma page (les Visible=true, dans le if). Changements visibles UNIQUEMENT au rechargement de la page, puisqu'on est en WEB.

    Mais bon, je vois de quoi vous voulez parler avec le Response.End

  6. #6
    Membre régulier Avatar de Othana
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 188
    Points : 86
    Points
    86
    Par défaut
    In fine ça ne m'arrange pas du tout : Le response.end me permet bien d'envoyer le doc, mais ne permet plus la redirection.
    Et j'en ai ABSOLUMENT BESOIN, comme expliqué pourquoi.

  7. #7
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 165
    Points : 241
    Points
    241
    Par défaut
    Bonjour,

    Le moyen que je vois pour que tu es ton rafraichissement ET l'ouverture/téléchargement du PDF, c'est de passer par un pop-up qui ouvrira le PDF :
    • ton "IbLinkToDoc_Click" gérera le rechargement de ta page
    • et un "OnClientClick" (ou un "OnClick" HTML) te permettra d'avoir ton PDF


    Comme l'a dit @Immobilis, tu ne peux pas réaliser tes 2 actions : après ton "Response.BinaryWrite(Buffer);", ton objet Response est complètement modifié pour faire afficher ton PDF, il n'est pas bon pour la suite de tes traitements.

  8. #8
    Membre régulier Avatar de Othana
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 188
    Points : 86
    Points
    86
    Par défaut
    Le pop-up me gêne un peu, dans le sens où le client peut les avoir bloqué.
    Sinon, y a moyen de lancer le téléchargement du doc sans passer par un Response ?
    ou ... "relancer" le processus Response, dans le if, vu que y a que là qu'il intervient.

    Mais si je fais un OnClick, je fais donc une méthode qui, de toute manière va appeler un Response. Et donc encore entrer en conflit avec l'accès au pdf, non ?

  9. #9
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 165
    Points : 241
    Points
    241
    Par défaut
    Peut-être en utilisant un Iframe ?

    Pour le "OnClick", je parlais d'un OnClick HTML avec du JS, pas un "OnClick" .NET.

  10. #10
    Membre régulier Avatar de Othana
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 188
    Points : 86
    Points
    86
    Par défaut
    ça va m'ennuyer le onclick JS, l'url est constituée dynamiquement en code behind. c'est pas pratique à récup dans un script js, ça...

  11. #11
    Membre régulier Avatar de Othana
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 188
    Points : 86
    Points
    86
    Par défaut
    Je suis sur une bonne piste là, à partir de ce que tu me dis.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IbLinkToDoc.Attributes.Add("OnClick", "window.open('" + linktodoc + "')");
    ça semble bien suffisant. j'ai un détail à régler, mais ça semble aller.
    Et dans l'event, j'ai juste le if, du coup.

  12. #12
    Membre régulier Avatar de Othana
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 188
    Points : 86
    Points
    86
    Par défaut
    Bon alors voilà la solution finale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                MonBouton.Attributes.Add("OnClick", "window.open('" + linktodoc + "')");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            protected void IbLinkToDoc_Click(object sender, ImageClickEventArgs e)
            {
                Session["dl"] = String.Format("http://www.monsite.com/lcsubscription/consultation.aspx?d={0}&s={1}&r={2}&m={3}", Session["dt"].ToString(), Session["s"].ToString(), Session["rf"].ToString(), Session["ml"].ToString());
                string url = Session["dl"].ToString();
     
                if (!Tablesendmail.Visible && !TableForward.Visible)
                {
                    Tablesendmail.Visible = true;
                    TableForward.Visible = true;
                    Response.Redirect(url);
                }            
            }
    C'est du nikel. Un onglet/pop-up s'ouvre avec le pdf et la page est rafraichie.

    Merci à vous deux !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ouverture doc + Chargement page
    Par Othana dans le forum C#
    Réponses: 0
    Dernier message: 13/06/2013, 12h15
  2. Réponses: 2
    Dernier message: 22/03/2007, 15h06
  3. Pb pour cacher des contrôles à l'ouverture d'une page
    Par Anne1969 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/01/2005, 15h16
  4. fenetre sans bords pour attente chargement page
    Par k4eve dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/11/2004, 10h17
  5. Ouverture d'une page
    Par wasch dans le forum C++Builder
    Réponses: 4
    Dernier message: 06/11/2003, 08h36

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