动态设置的ReportViewer(Dynamically Setting up ReportVie

2019-10-18 17:38发布

我要动态地设置了ReportViewer在运行时一个WebForm页面上。 我的ReportViewer看起来像这样的aspx页面上...

<rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana"
                    Font-Size="8pt" Height="90%"
                    Width="100%" OnReportError="ReportViewer1_ReportError">
</rsweb:ReportViewer>

我的阶级是这样的......。

namespace S43G.CV
{
    [Serializable]
    public class CaseLoadForecastReportResultCV
    {
        public  Int64 M3Fe { get; set; }
        public  Int64 M3Grad { get; set; }
        public  Int64 M6Grad { get; set; }
        public  Int64 M12Grad { get; set; }
        public  Int64 Total { get; set; }
        public  Int64 GroupPart { get; set; }
        public  Int64 Year { get; set; }
    }
}

在后面的代码我下面运行的ReportViewer ...

// get a list from db
List<CaseLoadForecastReportResultCV> answer = svyCaseBllHdl.GetCaseLoadForcastReport(userInput);    
// Reset the ReportViewer
ReportViewer1.Reset();
ReportViewer1.LocalReport.Dispose();
ReportViewer1.LocalReport.DataSources.Clear();

// build the Report Data Source
ReportDataSource rds = new ReportDataSource("S43G_CV_CaseLoadForecastReportResultCV", answer);

// set new values for ReportViewer
ReportViewer1.LocalReport.ReportPath = "S4_Reports/CaseLoadForecast.rdlc";
ReportViewer1.LocalReport.DataSources.Add(rds);
ReportViewer1.LocalReport.Refresh();

我得到的错误是以下几点:

一种数据源实例尚未为数据源“CaseLoadForecastReportResultCV”提供。

任何帮助将是巨大的。

Answer 1:

在你的RDLC您的数据源的名称是CaseLoadForecastReportResultCV ,你必须附加到其名称的前面一些额外的东西。 如果你只需要改变你的代码,这

ReportDataSource rds = new ReportDataSource("CaseLoadForecastReportResultCV", answer);

它应该工作。 RDLC是XML,易于阅读,可以读取数据源一节中,或在Visual Studio中加载的报告,并在报表设计中心,请前往报表菜单,然后选择数据源看到的数据源中的所有名称。



文章来源: Dynamically Setting up ReportViewer