2009-06-10 4 views
2

Ich verwende den Code, um PDF-Datei aus einem Popup zu exportieren.Problem mit Crystal Reports-Bericht in ASP.NET - ExportToHttpResponse

Auf Schaltfläche klicken

function popupReport() 
    { 
     var url = 'Report.aspx'; 
     window.open(url, 'winPopupReport', 'width=300,height=300,resizable=no,scrollbars=no,toolbar=no,directories=no,status=no,menubar=no,copyhistory=no'); 
     return false; 
    } 

und in Report.aspx.cs

ReportDocument repDoc = (ReportDocument) System.Web.HttpContext.Current.Session["StudyReportCrystalDocument"]; 
     // Stop buffering the response 
     Response.Buffer = false; 
     // Clear the response content and headers 
     Response.ClearContent(); 
     Response.ClearHeaders(); 
     try 
     { 
      repDoc.ExportToHttpResponse(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, Response, true, "StudyReport"); 
     } 
     catch(Exception ex) 
     { 
     } 

Der Code funktioniert in IE7 in Ordnung. Aber in IE6 schließt das Popup-Fenster nicht. Warum passiert das?

Antwort

0

Einige Browser verweigern automatische Schließung für Webseiten unter bestimmten Bedingungen.

Probieren Sie diese Arbeitsumgebung aus, um eine Seite zu schließen.

Schreiben Sie ein Skript, das auf der Seite, die Sie schließen möchten, eine andere Seite öffnet; In diesem Beispiel wird das Skript nach einem Klick auf die Schaltfläche per Code eingefügt, Sie können es jedoch direkt in HTML schreiben, wenn Sie es benötigen.

ClientScript.RegisterStartupScript(typeof(Page), "closePage", "window.open('Success.htm', '_self', null);", true); 

erstellen Success.htm Seite auf diese Weise

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head> 
    <title></title> 
    <script language="javascript" type="text/javascript"> 
    var redirectTimerId = 0; 
    function closeWindow() { 
     window.opener = top; 
     redirectTimerId = window.setTimeout('redirect()', 2000); 
     window.close(); 
    } 

    function stopRedirect() { 
    window.clearTimeout(redirectTimerId); 
} 

    function redirect() { 
    window.location = 'default.aspx'; 
} 
</script> 
</head> 
<body onload="closeWindow()" onunload="stopRedirect()" style=""> 
    <center><h1>Please Wait...</h1></center> 
</body></html>