Проблема с Crystal Report в ASP.NET — ExportToHttpResponse

Я использую код для экспорта файла PDF из всплывающего окна.

При нажатии кнопки

  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;
    }

и в 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 )
        {
        }

Код отлично работает в IE7. Но в IE6 всплывающее окно не закрывается. Почему это происходит?


person Sauron    schedule 10.06.2009    source источник


Ответы (1)


Некоторые браузеры запрещают автоматическое закрытие веб-страниц при определенных условиях.

Попробуйте этот обходной путь, чтобы закрыть страницу.

Напишите скрипт на странице, которую вы хотите закрыть, чтобы открыть другую страницу; в этом примере сценарий вводится через код после нажатия кнопки, но вы можете написать его непосредственно в HTML, если вам это нужно.

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

Создайте страницу Success.htm таким образом

<!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>
person Emanuele Greco    schedule 24.02.2012