代码之家  ›  专栏  ›  技术社区  ›  Eric Brown - Cal

动态设置ReportViewer

  •  1
  • Eric Brown - Cal  · 技术社区  · 15 年前

    ReportViewer 我的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();
    

    错误 我得到的信息如下:

    尚未为数据源“CaseLoadForecasterReportResultCV”提供数据源实例。

    任何帮助都会很好。

    1 回复  |  直到 12 年前
        1
  •  1
  •   Matt Greer    15 年前

    RDLC中数据源的名称为 CaseLoadForecastReportResultCV ,你有一些额外的东西附加到它的名字前面。如果你把代码改成这个

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

    它应该会起作用。RDLC是XML,易于阅读,您可以阅读其中的datasources部分,也可以在Visual Studio中加载报表,在以报表设计器为中心的情况下,转到报表菜单并选择datasources以查看所有数据源的名称。