Переключение между отчетами .rdlc в reportViewer - PullRequest
2 голосов
/ 30 января 2012

Я создал 4 отчета, которые содержат информацию из 4 таблиц в базе данных.В моем приложении у меня есть menuStrip, который содержит элементы, которые названы как эти отчеты.Как я могу заставить мои приложения reportViewer отображать отчет, выбранный в menuStrip?

Я попробовал этот код:

ReportDataSource RDS = new ReportDataSource();
RDS.Value = this.KontrolorKazneBindingSource;
reportViewer1.LocalReport.DataSources.Add(RDS);
reportViewer1.LocalReport.ReportPath = @"C:\Users\User\documents\visual studio 2010\Projects\Kontrolor\Kontrolor\KontrolorKazne.rdlc";
reportViewer1.RefreshReport();

Но я получаю ошибку: A data source instance has not been suplied for the data source

Можете ли вы сказать мне, что я делаю неправильно и как я могу решить эту проблему?

Ответы [ 2 ]

4 голосов
/ 30 января 2012

Прежде всего, я думаю, что вы должны позвонить reportViewer1.Reset(), чтобы сообщить ReportViewer о создании нового экземпляра LocalReport для вас.( MSDN )

После этого вы можете дать вашему ReportDataSource имя:

ReportDataSource RDS = new ReportDataSource("YourReportDataSourceName");

YourReportDataSourceName - это то, которое вы задали в конструкторе отчетов в данных отчетапанель.

0 голосов
/ 26 июня 2015
        ReportViewer1.Reset();
        Microsoft.Reporting.WebForms.ReportDataSource reportDataSouce = new Microsoft.Reporting.WebForms.ReportDataSource();

    if (DDAllRepotts.SelectedIndex == 1) {
        reportDataSouce.DataSourceId = "ObjectDataSourceALL"; 
        reportDataSouce.Name = "DataSetALL"; 
        ReportViewer1.LocalReport.DataSources.Add(reportDataSouce);
        ReportViewer1.LocalReport.ReportPath = "Report7.rdlc";
        ReportViewer1.LocalReport.Refresh();
        }

    else if (DDAllRepotts.SelectedIndex == 2) {
        reportDataSouce.DataSourceId = "ObjectDataSourceVoltage";
        reportDataSouce.Name = "DatasetForVoltage";
        ReportViewer1.LocalReport.DataSources.Add(reportDataSouce);
        ReportViewer1.LocalReport.ReportPath = "Reports/ReportVoltage.rdlc";
        ObjectDataSourceVoltage.DataBind();
        this.ReportViewer1.LocalReport.Refresh();
     }
...