在web项目中如何使用rdlc报表
引言: 以前在web项目中用到报表的时候 我们使用的是ReportServices (服务器端的)
使用效果还可以 缺点是: 需要在Sqlserver2005里面建立报表(需要 启动报表服务 设置权限等很繁琐)
感觉不如在程序里面来的直接和方便(以前一直没有找到办法)
一直到2010年底,一家客户 装的是Sqlserver2008 (原来做的自动发布报表 使用的是Sqlserver里面的一些Webservices函数)
但Sqlserver2008里面没有这些方法了 (只有接口的名称 没有实现)
我们报表的自动发布没法做了 只得打开Sqlserver 一个一个报表添加的 (郁闷...)
后来 我们一个同事(李来)做的Web报表(rdlc格式) 在本地做的(Web工程里面) 没有使用Sqlserver 里面的
这样就很方便了 下面我举例说明一下用法:
1. 建立一个文件夹(就举个例子是RDLC文件夹吧)
在项目上 右键选择添加/新建项 /报表 (新建立一个rdlc文件)
至于这个文件怎么使用 和 服务器端的(Sqlserver)相同 我省略....
数据源使用( 第二步建立的XSD数据源 在下面会有介绍 )
2. 建立一个文件夹(就举个例子是XSD文件夹吧)
在项目上 右键选择添加/新建项 /数据集 (新建立一个xsd文件)
在这个临时表里面增加列
3. 新建立一个aspx网页 选择ReportViewer 控件
<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
<rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt"
Height="400px" Width="400px">
<LocalReport>
</LocalReport>
</rsweb:ReportViewer>
4. 在后台代码里面
ReportViewer1.LocalReport.ReportPath = @"rdlc\Report1.rdlc";
//如何传参数
ReportParameter myParameter = new ReportParameter("参数01", "参数的值");
ReportParameter[] myParameterList = { myParameter };
ReportViewer1.LocalReport.SetParameters(myParameterList);
//
//DataSet1_DataTable1 指的是报表文件中数据源的名称
//myDataSet 指的是数据源(就是您从数据库里面查询出来的数据)
ReportDataSource rds = new ReportDataSource("DataSet1_DataTable1", myDataSet.Tables[0]);
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(rds);
ReportViewer1.LocalReport.Refresh();
5. 如果不知道报表的数据源的名称的话
您在aspx页面上 单击ReportViewer1的右上角 选择一个本地数据源 /选择数据源
其中的报表数据源 就是数据源的名称
结束语:
到此 就可以试运行一下您的web报表了
这个报表还可以直接在网页里面调用客户端的打印机(在vs2010里面试验的)
2011年3月29日19:38:55 过了好几天 再补充一下:
<1> XSD文件的文件夹好像有要求 如果放到一个文件夹里面 就找不到 xsd数据源(不应该啊) 不过这个细节也是个经验
<2> 报表的DLL版本的问题 最近升级公司的一个项目(从VS2008->VS2010) 报表(ReportingServices)从8.0->10.0
需要注意的是:引用里面添加ReportingServices WebForm 10.0版本
在页面上 也是使用10.0 在Web.config文件里面同样使用这个版本