如何在 ReportViewer 中将 Datatable 设置为数据源
how to set Datatable as datasource in ReportViewer
我在关于 Datatable
的最后一个问题中搜索 ReportViewer
中的 datasource
,我发现这是解决方案
DataTable table = new DataTable();
table.Columns.Add("value", typeof(string));
table.Columns.Add("price", typeof(string));
table.Columns.Add("quantity", typeof(string));
table.Rows.Add("test1","10","20");
table.Rows.Add("test2", "10", "20");
reportViewer1.LocalReport.DataSources.Clear();
ReportDataSource rprtDTSource = new ReportDataSource("TITLE",table);
reportViewer1.LocalReport.DataSources.Add(rprtDTSource);
reportViewer1.RefreshReport();
但我得到了这张图片作为结果
有什么问题??
您可以像下面这样添加来源
LocalReport report = new LocalReport();
string startupPath = Environment.CurrentDirectory;
report.ReportPath = startupPath + @"\RDCLTemplate.rdlc";
report.Refresh();
如果我没记错的话,您正在使用的 ReportDataSource ctor 在第一个参数中需要数据源,即命名数据源。你没有提供这个,你需要数据表名称。
将您的代码更新为:
DataTable dt = new DataTable();
dt.TableName = "myDataTable";
//Fill Datatable
ReportDataSource source = new ReportDataSource("myDataTable", dt);
您似乎忘记为报表查看器控件设置报表源。您可以使用以下任一选项设置报告源:
LocalReport.ReportEmbeddedResource
:报告嵌入资源的名称。
LocalReport.ReportPath
: 本地报表的文件系统路径。
LocalReport.LoadReportDefinition(Stream)
: 加载报表定义以使用流进行处理。
LocalReport.LoadReportDefinition(TextReader)
使用 TextReader 从本地文件系统加载报表定义。
例如,我假设您已将报表添加到您的项目中,因此您可以这样在报表查看器中显示它:
var reportDataSource1 = new ReportDataSource("NameOfReportDataSet", YourDataTable);
this.reportViewer1.LocalReport.DataSources.Add(reportDataSource1);
this.reportViewer1.LocalReport.ReportEmbeddedResource = "Namespace.ReportName.rdlc";
this.reportViewer1.RefreshReport();
您也可以使用设计器简单地设置报表查看器的报表。在您的表单上放置一个报告查看器,然后单击右上角的箭头以打开报告查看器的智能标记 window,然后从组合框中选择一个报告。
我在关于 Datatable
的最后一个问题中搜索 ReportViewer
中的 datasource
,我发现这是解决方案
DataTable table = new DataTable();
table.Columns.Add("value", typeof(string));
table.Columns.Add("price", typeof(string));
table.Columns.Add("quantity", typeof(string));
table.Rows.Add("test1","10","20");
table.Rows.Add("test2", "10", "20");
reportViewer1.LocalReport.DataSources.Clear();
ReportDataSource rprtDTSource = new ReportDataSource("TITLE",table);
reportViewer1.LocalReport.DataSources.Add(rprtDTSource);
reportViewer1.RefreshReport();
但我得到了这张图片作为结果
有什么问题??
您可以像下面这样添加来源
LocalReport report = new LocalReport();
string startupPath = Environment.CurrentDirectory;
report.ReportPath = startupPath + @"\RDCLTemplate.rdlc";
report.Refresh();
如果我没记错的话,您正在使用的 ReportDataSource ctor 在第一个参数中需要数据源,即命名数据源。你没有提供这个,你需要数据表名称。
将您的代码更新为:
DataTable dt = new DataTable();
dt.TableName = "myDataTable";
//Fill Datatable
ReportDataSource source = new ReportDataSource("myDataTable", dt);
您似乎忘记为报表查看器控件设置报表源。您可以使用以下任一选项设置报告源:
LocalReport.ReportEmbeddedResource
:报告嵌入资源的名称。LocalReport.ReportPath
: 本地报表的文件系统路径。LocalReport.LoadReportDefinition(Stream)
: 加载报表定义以使用流进行处理。LocalReport.LoadReportDefinition(TextReader)
使用 TextReader 从本地文件系统加载报表定义。
例如,我假设您已将报表添加到您的项目中,因此您可以这样在报表查看器中显示它:
var reportDataSource1 = new ReportDataSource("NameOfReportDataSet", YourDataTable);
this.reportViewer1.LocalReport.DataSources.Add(reportDataSource1);
this.reportViewer1.LocalReport.ReportEmbeddedResource = "Namespace.ReportName.rdlc";
this.reportViewer1.RefreshReport();
您也可以使用设计器简单地设置报表查看器的报表。在您的表单上放置一个报告查看器,然后单击右上角的箭头以打开报告查看器的智能标记 window,然后从组合框中选择一个报告。