c# - 报表查看器没有调用子报表方法
问题描述
我使用以下代码生成 PDF 报告:
public partial class Report{
public void myMethode(DataTable DT){
ReportViewer reportViewer1 = new ReportViewer();
reportViewer1.LocalReport.SetBasePermissionsForSandboxAppDomain(new PermissionSet(PermissionState.Unrestricted));
reportViewer1.LocalReport.ReportPath = @"Something" + ReportName + ".rdlc";
reportViewer1.ProcessingMode = ProcessingMode.Local;
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", DT));
reportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(SubReportProcessing);
Warning[] warnings;
string[] streamIds;
string mimeType = string.Empty;
string encoding = string.Empty;
string extension = string.Empty;
reportViewer1.LocalReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamIds, out warnings);
}
private static void SubReportProcessing(object sender, Microsoft.Reporting.WebForms.SubreportProcessingEventArgs e)
{
//do something
}
}
它适用于每个主报告,但是当它想要生成子报告时,它不会调用SubReportProcessing
方法!!!
那么有人可以帮我找到问题吗?
我Dot Net 4.7.2
也在使用我把它用作web api,我使用Microsoft.ReportViewer.WebForms
版本12.0.0.0
解决方案
我将此事件用于调用子报告:
// myMethode Function
reportViewer.Reset();
reportViewer.LocalReport.DataSources.Add(dataSource);
reportViewer.LocalReport.ReportPath = "Report Path";
reportViewer.LocalReport.SubreportProcessing +=
LocalReportOnSubreportProcessing;
reportViewer.LocalReport.Refresh();
private void LocalReportOnSubreportProcessing(object sender,
SubreportProcessingEventArgs e)
{
//Following Code Is just a Sample
switch (e.ReportPath)
{
case "ExamResult1To3Scores":
{
var ranksReportDataSource = new ReportDataSource
{
Name = "ExamResult1To3",
Value = GetCandidatesExamResultGuidanceRequest
};
e.DataSources.Add(ranksReportDataSource);
break;
}
case "ExamResult1To3Chart":
{
var levelRank =
GetCandidatesRequest.First().Guidance1To3ChartData;
var chartReportDataSource = new ReportDataSource
{
Name = "ExamResult1To3Chart",
Value = levelRank
};
e.DataSources.Add(chartReportDataSource);
break;
}
}
我希望你会从代码中受益。
推荐阅读
- java - 如何正确释放 RxJava2 中的资源?
- rocksdb - 如何完全关闭 Rocksdb?
- javascript - 在数组中查找具有特定值的对象
- python - TensorFlow from_generator 中数据集之间的运行时切换?
- symfony - 是否可以在 postPersist 中刷新?
- sql-server - 从 SQL Server Express 数据库复制到 SQL Server 标准数据库
- mysql - 尝试在 Woocommerce 中编辑订单详细信息页面
- python - Python 3.5 pip 9 AttributeError:“NoneType”对象没有属性“字节”
- spring - Spring Boot + Thymeleaf Security 无法识别
- typescript - 命名空间声明