Я пытаюсь заставить работать подчиненный отчет. Я использую VS 2017. Я получаю сообщение об ошибке типа «Не удалось получить данные для вложенного отчета« Subreport1 », расположенного в ....», при добавлении моих подчиненных отчетов в основные хранилища. Вот мой код:
public override int RunReport(ref ReportViewer rvNextgenReport)
{
DateTime dt = Convert.ToDateTime(ReportCriteria.DeliveryDate, CultureInfo.InvariantCulture);
string FormattedDeliveryDate = BasePage.GetUSFormattedDate(dt, this.REPORT_BS_DATE_FORMAT);
string FormattedShortDeliveryDate = BasePage.GetUSFormattedDate(dt, this.REPORT_SHORT_DATE_FORMAT);
string GenerationTime = BasePage.GetUSFormattedDate(DateTime.Now, this.REPORT_GEN_DATE_FORMAT);
string firstRouteId;
int find = ReportCriteria.RouteId.ToString().IndexOf(',');
if (find > 0) firstRouteId = ReportCriteria.RouteId.ToString().Substring(0, find);
else
firstRouteId = ReportCriteria.RouteId;
// set the report's parameters
reportParam = new ReportParameter[] {
new ReportParameter("Branch", ReportCriteria.BranchName),
new ReportParameter("DeliveryDate", ReportCriteria.DeliveryDate),
new ReportParameter("IncludeRouteNotesAfterDI", ReportCriteria.includeRouteNotesAfterDI?"1":"0"),
new ReportParameter("FormattedDeliveryDate", FormattedDeliveryDate),
new ReportParameter("FormattedShortDeliveryDate", FormattedShortDeliveryDate),
};
rvNextgenReport.LocalReport.ReportPath = "RouteCardNewSub.rdlc";
rvNextgenReport.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportProcessing);
return runReport(ref rvNextgenReport);
}
public void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
{
LocalReport lr = (LocalReport)sender;
e.DataSources.Clear();
ReportDataSource rds;
if (e.ReportPath.Contains("sureportsNewSub"))
{
string routeId = e.Parameters["RouteId"].Values[0];
for (int index = 1; index < lr.DataSources.Count; index++)
{
DataTable dt = (DataTable)lr.DataSources[index].Value;
DataView dv = new DataView(dt);
dv.RowFilter = string.Format("RouteId={0}", routeId);
rds = new ReportDataSource(string.Format("RouteCardNew_DataTable{0}", index + 1), dv.ToTable());
e.DataSources.Add(rds);
}
}
}
Обратите внимание, что я не получу путь к отчетам в e. Отчеты в LocalReport_SubreportProcessing, и я думаю, что это может привести к этой проблеме. Итак, кто-то, пожалуйста, объясните, почему этот объект не получает информацию о пути к отчетам.