有没有更好的方法在mvc 5 asp.net上集成rdlc报告。 每个人都在使用iframe。但我不喜欢那个解决方案。
有没有优雅的解决方案?
答案 0 :(得分:0)
如何在单独的标签中呈现rdlc报告?!
例如,
在您的控制器中:
public ActionResult Report()
{
LocalReport localReport = new LocalReport();
localReport.ReportPath = Server.MapPath("~/Reports/Report1.rdlc");
// you may comment dbContext if the report is static or needs no DB-connection
using (dbContext db = new dbContext())
{
ReportDataSource ds1 = new ReportDataSource("DataSet_Header", db.table_X.ToList());
ReportDataSource ds2 = new ReportDataSource("DataSet_Detail", db.StoreedProcedure_X(5).ToList());
// ...
localReport.DataSources.Add(ds1);
localReport.DataSources.Add(ds2);
string mimeType;
string encoding;
string fileNameExtension;
Warning[] warnings;
string[] streams;
string reportType = "PDF";
string deviceInfo = "<DeviceInfo>" +
"<OutputFormat>PDF</OutputFormat>"+
"<PageWidth>11.69in</PageWidth>"+
"<PageHeight>8.27in</PageHeight>"+
"</DeviceInfo>";
byte[] renderBytes;
// add report parameters here, if any
Microsoft.Reporting.WebForms.ReportParameter[] para = new ReportParameter[] {
new ReportParameter("sample", Sample.ToString())
// , add more parameters if anymore exists ...
};
localReport.SetParameters(para);
renderBytes = localReport.Render(
reportType,
deviceInfo,
out mimeType,
out encoding,
out fileNameExtension,
out streams,
out warnings
);
return File(renderBytes, "application/pdf");
} // end using
}
在您看来:
您可以为上述操作方法创建<a>
标签或@Html.ActionLink
:
<a href="@Url.Action("Report", "controllerName")">PRINT</a>
希望这有帮助:)