简体   繁体   English

ASP.NET报表查看器

[英]ASP.NET report viewer

The following code resides inside a method and it uses the report viewer to render reports: 以下代码位于方法内部,并且使用报表查看器呈现报表:

            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();

So far no issues when trying to generate the reports, if there is a lot of information then the report will have two or more pages. 到目前为止,尝试生成报告时没有问题,如果有很多信息,那么报告将有两个或更多页面。 If I want to print or export to .pdf I can do so from the rendered report. 如果要打印或导出为.pdf,可以从呈现的报告中进行。 My questions are two: 我的问题是两个:

1- How can I make the report viewer export to .pdf programmatically. 1-如何使报告查看器以编程方式导出为.pdf。

2- How can I make the report viewer show only 1 page ignoring the rest of the data, or in case of exporting it to .pdf programmatically how can I export only the first page ignoring the rest. 2-如何使报表查看器仅显示一页而不忽略其余数据,或者以编程方式将其导出到.pdf,如何仅忽略其余部分仅导出第一页。

For example if a report would normally render 2 pages I want it to render only the first one. 例如,如果一个报告通常会呈现2个页面,那么我希望它仅呈现第一个页面。

Is it possible to accomplish using the report viewer? 是否可以使用报告查看器来完成?

Thank you. 谢谢。

I'm not sure how to limit the pdf to one page. 我不确定如何将pdf限制为一页。 But here is how you export to 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();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM