2012-03-30 111 views
0

下面的代码所在的方法中,它使用报表查看器来渲染报道:试图生成报告时ASP.NET报表浏览器

  objReportViewer.LocalReport.ReportPath = "TestReport.rdlc"; 

      objReportViewer.LocalReport.DataSources.Clear(); 

      objReportViewer.LocalReport.DisplayName = "TestReport_" + DateTime.Now.ToString("yyyyMMdd"); 

      object objReportDataSource = TestReportDataSource(Id); 

      objReportViewer.LocalReport.DataSources.Add(new ReportDataSource("TestReportDataSource", objReportDataSource)); 

      objReportViewer.ZoomMode = ZoomMode.PageWidth; 


      ReportParameter[] arrReportParameters = new ReportParameter[3]; 

      // First Name 
      arrReportParameters[0] = new ReportParameter("FirstName",person.FirstName); 

      // LastName 
      arrReportParameters[1] = new ReportParameter("LastName", person.LastName); 

//DOB 
    arrReportParameters[2] = new ReportParameter("Age",person.DOB); 


      objReportViewer.ShowParameterPrompts = false; 
      objReportViewer.DocumentMapCollapsed = true; 
      objReportViewer.ShowDocumentMapButton = false; 


      objReportViewer.LocalReport.SetParameters(arrReportParameters); 

    objReportViewer.LocalReport.ExecuteReportInSandboxAppDomain(); 

      objReportViewer.LocalReport.Refresh(); 

到目前为止没有任何问题,如果有大量的信息那么报告将有两个或更多页面。如果我想打印或导出为.pdf,我可以从呈现的报告中这样做。 我的问题是两个:

1-如何以编程方式将报表查看器导出为.pdf。

2-如何让报告查看器仅显示1页而忽略其余数据,或者如果以编程方式将其导出为.pdf,我如何只导出第一页而忽略其余数据。

例如,如果报表通常会呈现2页,我希望它只呈现第一个页面。

使用报告查看器可以完成吗?

谢谢。

回答

1

我不确定如何将pdf限制为一页。但这里是你如何输出为pdf:

Microsoft.Reporting.WebForms.LocalReport oLocalReport = objReportViewer.LocalReport; 


byte[] renderedBytes = null; 
string reportType = "PDF"; 
string mimeType = "application/pdf"; 
string encoding = null; 
Microsoft.Reporting.WebForms.Warning[] warnings = null; 
string[] streams = null; 
string deviceInfo = "<DeviceInfo><OutputFormat>PDF</OutputFormat><PageWidth>8.5in</PageWidth><PageHeight>11in</PageHeight></DeviceInfo>"; 


//Render the report 
renderedBytes = oLocalReport.Render(reportType, deviceInfo, mimeType, encoding, "PDF", streams, warnings); 

System.Web.HttpContext.Current.Response.Clear(); 
System.Web.HttpContext.Current.Response.ContentType = mimeType; 

System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + _reportName + ".PDF"); 
System.Web.HttpContext.Current.Response.BinaryWrite(renderedBytes); 
System.Web.HttpContext.Current.Response.End(); 
+0

谢谢戴夫。它运作良好。 – Fayde 2012-04-05 13:21:32