一 绑定数据库资源
这个比较简单,新建一个Report之后,或者在Data Source 窗口点新建Data Source,会弹出如下对话框,在框中选择DataBase之后按照自己的数据库相关信息进行配置即可。
这种选择资源的方式,获取的字段都是数据库中的表、视图、存储过程以及触发器中的字段,比较依赖数据库SQL语句,当然,这些字段的值也是可以在后面的运行过程中动态改变的。
二 运行时动态绑定资源
动态绑定资源可以在针对数据库中的表或视图中的字段,在运行过程中改变它们的值,也可以是从一开始就脱离数据库,自己设计字段和表,然后在运行过程中为这些字段赋值。这里演示后者,因为后者的灵活性更大,在开发过程中也更常为使用。
1. 首先新建Report时直接跳过图一所示的选择数据源的过程。这时将会新建一个空白的Report。
2. 然后在项目中新建一个DataSet数据集。
如图2所示,在空白处右键新建一个DataTable,然后对DataTable进行编辑,添加列。如图3所示。
3. 然后返回Report对象的设计页面,在Report Data窗口新建一个DataSet 数据集。
在DataSource下拉栏中选择刚才创建的数据集,然后选择数据表,数据表中的字段会在Fields窗口中显示。然后点确定即可。
4. 向Report对象中拖一个Table控件,并为其赋值。如图5所示。
5. 写一个返回DataTable的函数,返回的DataTable即包含我们需要用到的数据。这些数据可以从数据库中获取,也可以通过其他方式生成。下面只是个例子。
private DataTable load_test()
{
DataTable dt = new DataTable();
dt.Columns.Add("name");
dt.Columns.Add("age");
dt.Columns.Add("sex");
dt.Rows.Add("tiang", 21, "男");
return dt;
}
6. 在窗体中添加一个ReportViewer,并完成以下代码
//绑定报表文件
reportViewer1.LocalReport.ReportPath = @"../../Report3.rdlc";
//清空DataSource
reportViewer1.LocalReport.DataSources.Clear();
//重新添加DataSource,切记"DataSet1"是在Report对象中添加的数据集的名称,load_test()返回的DataTable包含该数据集中字段的值。要一一对应。
reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DataSet1", load_test()));
//刷新报表显示器
reportViewer1.RefreshReport();
至此,动态绑定数据源的工作级已完成。