一、需求分析
我们如果如果想在一些情况下打印一些表格中的数据,并且这些表格中的数据能被编辑,那么我们如何实现呢?答案是使用visual studio自带的rdlc报表设计工具,reportviewer报表显示、打印控件,以及dataset数据源类,其中数据源、报表设计、报表设计打印这三者的关系如下图所示:
二、建立数据源
三、设计报表,绑定数据源
如果没有没有报表这个选项的话,则按照如下操作:
安装microsoft RDLC Report Designer
四、显示报表、打印报表
将控件
如果没有该控件的话,如下操作:
工具箱-》选择项-》添加Microsoft.ReportViewer.WinForms.dll
往dataset绑定一些数据,可以从数据库中读取,也可以直接编码指定,如下:
private void Form1_Load(object sender, EventArgs e)
{
try
{
InitialDataTable();
DataSet ds = new DataSet(); //创建新的ds
ds.Tables.Add(dt);//将datatable的值赋值给dataset
//获取报表文件并赋值给reportviewer
//this.reportViewer1.LocalReport.ReportPath = @"D:\technologyProgram\Rdlc测试\Report1.rdlc";//指定rdlc在本地的路径
this.reportViewer1.LocalReport.ReportEmbeddedResource = "Rdlc报表.Report1.rdlc";//项目名.包表明.rdlc
//指定数据集
this.reportViewer1.LocalReport.DataSources.Clear();//清除reportviewer原来绑定的数据
ReportDataSource rds1 = new ReportDataSource("DataSet1", ds.Tables[0]);//注意此处数据集名字“DataSet1”必须要和添加的数据集名字相同,否则无法绑定数据源至报表数据集
this.reportViewer1.LocalReport.DataSources.Add(rds1);//将数据传给reportviewer
//显示报表
this.reportViewer1.RefreshReport();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
public void InitialDataTable()
{
dt.Columns.Add("姓名", typeof(string));
dt.Columns.Add("年龄", typeof(string));
dt.Columns.Add("性别", typeof(string));
for (int i = 0; i < 100; i++)
{
DataRow dr = dt.NewRow();
dr["姓名"] = "小王";
dr["年龄"] = i;
dr["性别"] = "男";
dt.Rows.Add(dr);
}
}