RDLC系列链接
最近新换了工作,终于从单纯的开发中脱离出来,换成主运维和偶尔开发了,但还没有转行。本来打算找工作是想转行的,毕竟三线城市搞IT,以后真的不好说。最近经理让给财务做一个报表展示系统。由于之前一直都是做B2C的网站,流程和报表方面几乎没有涉猎。只能从博客园和csdn上来查找资料,由于大部门人都是用的水晶报表,RDLC的资料挺少。所以找了好久,也自己实验了好久,终于项目第一期做的项目差不多了,今天在家休息,就拿出点时间来整理一下。这个项目分两期,第一期主要是数据表的展示,第二期会有矩阵,折线图和柱状图的使用。所以,文章先把自己使用到的整理出来。参考的文章链接如下:
http://www.cnblogs.com/waxdoll/archive/2006/02/25/337713.html 蜡人张(想必做RDLC的都看过)
http://www.gotreportviewer.com/ GotReportViewer(很多功能都是照着它上面的实例来做的)
下面就按照我的步骤先来个简单的栗子吧。
1.新建项目,这个大家都会了吧。就不唠叨了,按照自己的习惯命名就好,我这里是demo1
2.然后是新建数据源,在网站或者项目上右击,添加—>新建项—>数据—>数据集,命名为demo1.xsd,点击确定
3.在数据源页面拖入DataTabel,按照下图设计表结构
4.新建报表,在网站或者项目上右击,添加—>新建项—>Reporting—>报表,命名为demo1.rdlc,点击确定
5.下面是重头戏,设计报表,在左侧的报表项中选择表,拖到右边的白色区域,会弹出如下对话框,输入名称选择数据源以及数据集,点击确认然后将需要显示的字段添加到表中即可。
6.新建一个页面,名称demo1.aspx,在页面设计中拖入ScriptManager和Reportview控件
7.然后开始写后台绑定数据的代码了,如下
demo.aspx.cs
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 using System.Data; 8 using System.Data.SqlClient; 9 using Microsoft.Reporting.WebForms; 10 11 namespace rdlc1 12 { 13 public partial class demo11 : System.Web.UI.Page 14 { 15 protected void Page_Load(object sender, EventArgs e) 16 { 17 if (IsPostBack == false) 18 { 19 FillDataToReport(); 20 } 21 } 22 23 private void FillDataToReport() 24 { 25 26 // DataTable dt1 = GetDataTabel(); 27 28 //if (dt1.Rows.Count > 0) 29 //{ 30 31 //} 32 33 DataTable dt = new DataTable(); 34 dt.Columns.Add("Dept", typeof(string)); 35 dt.Columns.Add("CostCenter", typeof(string)); 36 dt.Columns.Add("SalePrice", typeof(decimal)); 37 dt.Rows.Add("IT", "810", 867); 38 dt.Rows.Add("IT", "811", 877); 39 dt.Rows.Add("E", "710", 867); 40 dt.Rows.Add("E", "711", 877); 41 dt.Rows.Add("L", "710", 867); 42 dt.Rows.Add("L", "711", 877); 43 44 45 ReportViewer1.LocalReport.ReportPath = "demo1.rdlc"; 46 47 //显示报表 48 ReportViewer1.LocalReport.DataSources.Clear(); 49 ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("dtDemo", dt));//要和设计报表时指定的名称一致,这里是dtDemo 50 ReportViewer1.LocalReport.Refresh(); 51 52 53 } 54 55 } 56 }
8.一切貌似都大功告成,F5运行,弹出如下报错。犹如晴天小霹雳,不要着急,仅需要配置下web.config即可
9.在web.config文件中添加添加httphandler节点即可,下面上我的web.config文件。
<?xml version="1.0"?> <!-- 有关如何配置 ASP.NET 应用程序的详细消息,请访问 http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <system.web> <httpHandlers> <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false" /> </httpHandlers> <compilation debug="true" targetFramework="4.0"> <assemblies> <add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> <add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> <add assembly="Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> <add assembly="System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/></assemblies></compilation> </system.web> </configuration>
10.F5运行,可以鸟,上图。
11.今天先整理一部分,后续的将抽空给大家呈现。主要是行分组和总计