none
Seite Laden nach Response.Flush() RRS feed

  • Frage

  • hallo zusammen

    auf die Default.asp wir aus DataGrid eine Pdf-datei bzw. Report erstellt, die Erstellung der Pdf-Datei geschiet durch ein Aufruf eines Webservice

    der eine Tabelle geliefert bekommt und darus ein Pdf erstellt, nun schickt der Webservice die Datei an dem Clinet zurück.

     

    das Problem ist nach dem der Client die Datei bekommt, wird die Seite nicht mehr geladen

    also die Status-Label nicht mehr aktualliesiert, weil die Seite kein Postback mehr bekommt. dh wenn eine unabhängige Fehldermeldung in der StatusLabel vor der erstellung der Pdf angezeigt war, bleibt drin also wird nicht gelöscht auch wenn mann label.text="" setzt

     

    Montag, 5. Dezember 2011 08:45

Antworten

  • Morge zusammen,

    Die einfachste lösung auf Masterpage Control zu zugreifen wäre mit javascript

    <script type="text/javascript">
        
         ctl00_lblStatus.innerHTML = '';
    </script>

    Beste Grüsse

    Lubb

    • Als Antwort markiert lubb Dienstag, 12. Februar 2013 06:50
    Dienstag, 12. Februar 2013 06:49

Alle Antworten

  • Hi,

    a) Classic ASP oder ASP.NET?

    b) Wer ruft hier welchen Webservice wie auf?

    c) Woher sollte der Client wissen, dass er die Seite neu laden soll, wenn der Aufruf doch auf einen Webservice geht? Was soll der Client da auch neu laden und vor allem, warum?

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Montag, 5. Dezember 2011 09:54
    Moderator
  • Da hast vollkommen recht, die Seite bekommt nichts mit, dass die zustand der Seite sich geändert hat, da der Webservice eine Datei an dem Client zuruckschickt, deswegen wird die Statuslabel nicht zurückgesetzt und genau das ist das Problem

     

    heist es man soll damit leben oder gibts ein um weg.

    Montag, 5. Dezember 2011 10:01
  • Hi,

    Da hast vollkommen recht, die Seite bekommt nichts mit, dass die zustand der Seite sich geändert hat, da der Webservice eine Datei an dem Client zuruckschickt, deswegen wird die Statuslabel nicht zurückgesetzt und genau das ist das Problem

    nuja, das Problem sehe ich gar nicht. Da Du nicht schreibst, wie genau die Datei nun eigentlich von wo aus geladen wird, kann man da auch nur spekulieren.

    Generell könnte man, nachdem die Datei geladen wurde, einen weiteren Webservice aufrufen, der die Statustexte neu lädt und anzeigt. Alternativ auch einfach self.location.href="/deineseite.aspx"; ausführen, damit wird dann die angegebene Datei nochmals im Browser geladen.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Montag, 5. Dezember 2011 10:05
    Moderator
  • Durch ButtonClick auf die Default.aspx wird die Methode PDFExport_Click ausgelöst, die wiederrum die WebService Methode   myService.ExportData aufruft.

     

    private void PDFExport_Click(object sender, EventArgs e)
    {
    
    
    Master.SetPageStatus("");
    
    ....
    
    
    Byte[] results;
    results = myService.ExportData(dt, exportFormat, reportName);
    
    // Export-Datei erstellen
    HttpResponse Response = HttpContext.Current.Response;
    Response.ContentType = "Application/";
    Response.AddHeader("content-disposition", "attachment; filename=" + filename + "_" + DateTime.Today.ToString("dd.MM.yyyy") + "." + fileFormat);
    Response.OutputStream.Write(results, 0, results.Length);
    Response.Flush();
    
    }
    

     

    Mit dem Aufruf Master.SetPageStatus(""); soll die Methode SetPageStatus die Statuslabel auf die MasterPageDefault zurückgesetzt werden (die Mehode wird tatsichlich aufgerufen aber die Label wird nicht zurückgestezt?!) 

           public void SetPageStatus(string Status)
            {
                lblStatus.Text = Status;
            }
    

    dann liefert der Webservice die Pdf an dem Client zurück ohne die Seite neue zuladen.

     

     

    wenn ich versuche die seite neu zuladen durch den

    Response.Redirect("Default.aspx", true);
    

    geht die Pdfdatei verloren

     

     

     



    • Bearbeitet lubb Montag, 5. Dezember 2011 11:16
    • Als Antwort markiert lubb Dienstag, 12. Februar 2013 06:50
    • Tag als Antwort aufgehoben lubb Dienstag, 12. Februar 2013 06:50
    Montag, 5. Dezember 2011 11:14
  • Morge zusammen,

    Die einfachste lösung auf Masterpage Control zu zugreifen wäre mit javascript

    <script type="text/javascript">
        
         ctl00_lblStatus.innerHTML = '';
    </script>

    Beste Grüsse

    Lubb

    • Als Antwort markiert lubb Dienstag, 12. Februar 2013 06:50
    Dienstag, 12. Februar 2013 06:49