C#+Winform用ReportViewer控件制作报表 |
您所在的位置:网站首页 › 文本框能做控件容器吗 › C#+Winform用ReportViewer控件制作报表 |
之前也做过报表,因为内容比较简单,就直接用Label和Textbox控件组合画出报表,还添加了PrintDialog打印控件用来打印报表,效果如下图: 代码核心是:将你想要打印的内容绘制到 PrintDocument对象上去,并单击该对象的PrintPage事件 private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { Bitmap _NewBitmap = new Bitmap(panel1.Width, panel1.Height); panel1.DrawToBitmap(_NewBitmap, new Rectangle(0, 0, _NewBitmap.Width, _NewBitmap.Height)); e.Graphics.DrawImage(_NewBitmap, 0, 0, _NewBitmap.Width, _NewBitmap.Height); }但是后来遇到复杂的报表上面那种方法就不合适了,看到工具箱里有ReportViewer报表控件,就试着用了用。在网上查阅一番,的确可以完成的需求,但是介绍的很少,都很片面,不够详细,折腾我不少时间。其实我希望能有那种傻瓜式的,教我下一步、下一步,下面我尽量把步骤写的详细一些: 添加数据集 右键项目,选择添加新建项,数据——数据集——添加:在WebPrintOrder.cs代码设计界面中,为矩阵的数据集DataSet1添加数据,我的数据是通过界面的构造函数传过来的然后直接赋值,也可以直接SQL server条件查询语句将查询结果直接填充。 private void WebPrintOrder_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); //定义本地数据表的列,名称应跟之前所建的testDataTable表中列相同。 dt.Columns.Add("Time", typeof(DateTime)); dt.Columns.Add("Distance", typeof(String)); dt.Columns.Add("Layer", typeof(String)); dt.Columns.Add("FID", typeof(Int32)); dt.Columns.Add("Strength", typeof(Int32 )); dt.Columns.Add("UserName", typeof(String)); //动态生成一些测试用数据 DataRow row = dt.NewRow(); row[0] = time; row[1] = "管长 "+Distance.ToString ()+"米处"; row[2] = Layer; row[3] = FID; row[4] = 4; row[5] = Login.username+"admin"; dt.Rows.Add(row); //设置本地报表,使程序与之前所建的testReport.rdlc报表文件进行绑定. this.reportViewer1.LocalReport.ReportPath = "Report.report2.rdlc"; this.reportViewer1.LocalReport.DataSources.Clear(); this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", dt)); this.reportViewer1.RefreshReport(); } 通过设置参数添加数据 在report2.rdlc的报表数据中,右击参数-添加参数,设置参数名称和数据类型
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |