如何在asp.net webform下使用rdlc
最近做做一个mis的项目,需要用到了打印报表功能,原来是直接打印页面的,但是显示起来很不专业,所以想到使用vs自己带的rdlc报表进行处理。
优点:报表开发比较快,体积比水晶报表小很多,微软原生兼容性有保证
缺点:
1、样式显示问题,不知道是为啥,我创建的报表在谷歌内核下显示的时候,数据显示方面出现错位
2、用户使用报表显示的时候,会有插件下载的提示,可能在用户的客户端出现显示不出来的情况
以下代码在vs2008中调试成功
1、首先在项目中添加一个报表文件,名称成为report1.rdlc
然后添加DataSet 设置成名称"mydts" , 点击右键选择添加一个datatable,设置名称为dts
选择数据->显示数据源,显示出刚添加的myds
就可以使用拖动的方式对数据填写,对表格进行设计
2、前台aspx代码
<%@ 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="1000px" Width="1000px">
<LocalReport ReportPath="Report1.rdlc">
</LocalReport>
</rsweb:ReportViewer>--页面显示控件
3、后台代码
ReportViewer1.LocalReport.ReportPath = @"Report1.rdlc";
//如何传参数
//ReportParameter myParameter = new ReportParameter("参数01", "参数的值");
//ReportParameter[] myParameterList = { myParameter };
//ReportViewer1.LocalReport.SetParameters(myParameterList);
mydts.dtsDataTable dt2 = new mydts.dtsDataTable();
for (int i = 0; i < 10; i++)
{
DataRow dr = dt2.NewRow();
dr["dt1"] = i.ToString();
dr["dt2"] = (i * 2).ToString();
dr["dt3"] = (i * 3).ToString();
dt2.Rows.Add(dr);
}
ReportDataSource rds = new ReportDataSource("mydts_dts", dt2);
//这个地方的mydts_dts是你定义的dataset,dts是你定义的datatable
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(rds);
ReportViewer1.LocalReport.Refresh();
4、有的时候程序在处理的过程中会提示“控件错误之类”的报错,需要重新打一个补丁,地址如下:
http://download.microsoft.com/download/0/9/d/09d3df2d-abec-4ebe-bc64-260b05a30feb/ReportViewer.exe