【发布时间】:2013-04-14 04:08:51
【问题描述】:
WinForms reportViewer (.NET 3.5) 从 DataTable 绑定数据
我正在尝试将动态创建的 DataTable 绑定到 reportViewer 控件。互联网上有很多关于这方面的教程,但它们似乎不适用于这个项目......(有关于堆栈溢出的相关问题,但解决方案在我的情况下不起作用)
这是显示报告按钮的事件处理程序:
private void btn_ShowRwport_Click(object sender, EventArgs e)
{
//Set the date range for the report
rptctn.SetDateRangeOne(listBox1.SelectedItem.ToString(), dateTimePicker_Start.Value, dateTimePicker_End.Value);
//Get the report datatable
DataTable dt = rptctn.GetReportTest(listBox1.SelectedItem.ToString());
//Set the datagridview
dataGridView1.DataSource = dt;
//Set the reportViewer
this.reportViewer1.LocalReport.DataSources.Clear();
Microsoft.Reporting.WinForms.ReportDataSource rprtDTSource = new Microsoft.Reporting.WinForms.ReportDataSource(dt.TableName, dt);
this.reportViewer1.LocalReport.DataSources.Add(rprtDTSource);
this.reportViewer1.RefreshReport();
}
我知道 DataTable 正在正确重试,因为 dataGridView 工作...... https://docs.google.com/file/d/0B6b_N7sDgjmvZHpEYS1BWWhqZ3c/edit?usp=sharing
该项目有以下限制:
由于客户端环境,必须使用 .NET 3.5。 (所以报告查看器 2008)
DataTable 和 ReportViewer 的创建在不同的包中(应用程序/表示层)
我试图避免创建 .rdlc 文件,因为报告(数据表)具有可变数量的行/列。
有人知道我如何将动态创建的 DataTable 绑定到报表查看器吗?
【问题讨论】:
-
你报告中的数据源是否与
dt.TableName同名? -
@JoeyGennari 我没有将数据源设置为reportViewer1(我认为这就是上面的代码所做的);同样正如我上面提到的,我在项目中没有任何 .rdlc 文件,我会将数据源设置为什么? dt.TableName 的值为空字符串。
-
真正需要做的是动态创建一个RDLC文件并添加一个表。我从gotreportviewer.com 找到了一个带有一些代码的第 3 方示例,只需在页面右侧向下查看动态生成 RDLC - 表。
-
@JoeyGennari 这行得通,我只需要玩一会儿。如果您将上面所说的内容写为答案,我会将其标记为答案,谢谢。
标签: c# data-binding .net-3.5 datatable reportviewer2008