动态设置 ReportViewer
我想在运行时在 Web 表单页面上动态设置 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();
我得到的错误如下:
尚未为数据源“CaseLoadForecastReportResultCV”提供数据源实例。
任何帮助都会很棒。
I want to dynamically setup the ReportViewer
at run time on a webform page.
My ReportViewer looks like this on the aspx page…
<rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana"
Font-Size="8pt" Height="90%"
Width="100%" OnReportError="ReportViewer1_ReportError">
</rsweb:ReportViewer>
My class looks like this….
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; }
}
}
In the code behind I do the following to run the 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();
The error I get is the following:
A data source instance has not been supplied for the data source 'CaseLoadForecastReportResultCV'.
Any help would be great.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
RDLC 中数据源的名称是
CaseLoadForecastReportResultCV
,您在其名称前面附加了一些额外的内容。如果您只是将代码更改为此ReportDataSource rds = new ReportDataSource("CaseLoadForecastReportResultCV", answer);
它应该可以工作。 RDLC 是 XML 且易于阅读,您可以阅读其中的数据源部分,或者在 Visual Studio 中加载报表,并以报表设计器为焦点,转到报表菜单并选择数据源以查看数据源的所有名称。
The name of your datasource in your RDLC is
CaseLoadForecastReportResultCV
, you have some extra stuff appended to the front of its name. If you just change your code to thisReportDataSource rds = new ReportDataSource("CaseLoadForecastReportResultCV", answer);
It should work. RDLC is XML and easy to read, you can read the datasources section in it, or load the report in Visual Studio and with the Report Designer focused, go to the Report menu and choose DataSources to see all the names of your data sources.