Средство просмотра отчетов не вызывало вспомогательный метод отчета - PullRequest
0 голосов
/ 26 мая 2019

Я использую следующий код для генерации отчета в формате 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, также я использовал это как веб-API и использую Microsoft.ReportViewer.WebForms версию 12.0.0.0

1 Ответ

2 голосов
/ 26 мая 2019

Я использую это событие для вызовов SubReports:

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

Я надеюсь, что вам будет полезен кодекс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...