ПодотчетПроцессинг не запускается в отчете rdlc - PullRequest
0 голосов
/ 21 октября 2019

Здравствуйте, у меня проблема с использованием подотчетов RDLC. У меня очень простая установка, где у меня есть люди и их места жительства.

Проблема заключается в том, что подотчет, содержащий место жительства для каждого человека, не загружен, поскольку событие SubreportProcessing никогда не запускается.

Я настроил своего средства просмотра отчетов следующим образом:

private void LoadAnniversaryReport()
        {
            DataSet dt = new ResidentSearchServiceClient().GetAnniversaries();
            residenceDataTable = dt.Tables[1];

            ReportDataSource personDataSource = new ReportDataSource("Dataset", dt.Tables[0]);

            this.ReportViewer.LocalReport.ReportPath = "Reports\\Anniversary\\Anniversary.rdlc";
            this.ReportViewer.LocalReport.DataSources.Clear();
            this.ReportViewer.LocalReport.DataSources.Add(personDataSource);
            this.ReportViewer.LocalReport.SubreportProcessing += ResidenceSubreportProcessing;
            this.ReportViewer.Refresh();
            this.ReportViewer.RefreshReport();

            _isReportViewerLoaded = true;
        }

Подотчет имеет параметр с именем «Id». Вот xml определения параметра вложенных отчетов:

ScreenShotOfParameterConfig

<ReportParameters>
    <ReportParameter Name="Id">
      <DataType>Float</DataType>
      <Nullable>true</Nullable>
      <Prompt>ReportParameter1</Prompt>
    </ReportParameter>
  </ReportParameters>

И родительский вложенный отчет и определение параметра

parentsSubreportAndParameterConf

<Subreport Name="PersonResidences">
    <ReportName>PersonResidences</ReportName>
    <Parameters>
        <Parameter Name="Id">
            <Value>=Fields!ENTITYID.Value</Value>
        </Parameter>
    </Parameters>
    <OmitBorderOnPageBreak>true</OmitBorderOnPageBreak>
    <Style>
        <Border>
            <Style>None</Style>
        </Border>
    </Style>
</Subreport>

«ReportName» - это точное имя отчета в файловой системе без расширения .rdlc. Оба отчета находятся в одном и том же подкаталоге.

Родительский отчет работает без подотчета.

Я знаю, что этот вопрос задавался ранее, но ни один из ответов, похоже, не решил мою проблему.

Любая помощь будет принята с благодарностью.

Редактировать: следовал этому руководству и столкнулся с точно такой же проблемой https://www.c -sharpcorner.com / article / rdlc-subreport-using-c-sharp-и-МОФ /

1 Ответ

0 голосов
/ 21 октября 2019

Хорошо, так что мне удалось решить проблему.

Проблема заключалась в том, что при использовании VS2019 происходят некоторые странные вещи с определениями отчетов при их редактировании. Это привело к неверным целевым пространствам имен для меня!

Первоначально, когда я создаю отчет, пространство имен равно

xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition"

Как только вы добавите какой-либо параметр в этот отчет, VS изменит его на

xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition"

Мой «родительский» отчет не изменился (поскольку он не имеет никаких параметров, кроме on, определенного в подотчете). Но мой подотчет изменился.

Теперь версия ReportViewer по умолчанию больше не может отображать подотчет и возвращает очень информативное исключение, которое не может быть найдено.

Так что я в основном сделал две вещи:

  • Обновил мои сборки ReportViewer через Nuget (Microsoft.ReportViewer.VS2015.WinForms)
  • Удостоверился, что оба отчета нацелены на одно и то же пространство имен

Надеюсьэто поможет кому-нибудь когда-нибудь.

...