最近使用VS2010做一个asp.net项目,当中使用到了报表功能。我选择了水晶报表来做,对水晶报表是刚接触,从来还没有用过。下面我这个初学都的使用水晶报表的过程:
一、安装CRforVS2010
1、从官网下载CRforVS2010水晶报表插件
2、直接安装CRforVS2010,如不安装该插件,是不能开发水晶报表的。虽然VS2010新建功能里面有水晶报表,但无法开发。新建出来的是一个HTML页面。所以先安装CRforVS2010插件。
二、开发水晶报表
1、新建数据集,然后在该数据集中添加一张表,与数据库中的表的字段持一致,这样是为了能将数据库的数据直接填充到数据集表中。
2、新建水晶报表,选择向导方式创建水晶报表
- 选择“使用报表向导”,在"选择专家"框中选择“标准”,点击“确定”
- 在“可用数据源”中,点开“项目数据”,选择“ADO.NET数据集”,选择新建的数据集,从数据集中选择要使用的表,添加到右边的框中,点击“下一步”
- 在“可用字段”中将要显示的字段移动要“要显示的字段”的框中,点击“下一步”
- 在“可用样式”中选择表,点击“完成”
3、在水晶报表中,从左侧的“字段资源管理器”中,选择“数据库字段”,打开表,可以从中选择要显示的字段。虽然在向导过程中已经有了要显示的字段。
4、新建aspx页面文件,在页面中拖入“CtystalReportView”控件,在aspx.cs文件中写入以下代码:
ReportDocument rd = new ReportDocument();
DataSet ds = new DataSet();
string xsdPath = Server.MapPath("~/StumReportDS.xsd");
ds.ReadXmlSchema(xsdPath);
//获取查询条件
object strWhere = Session["depClassWhere"];
if (strWhere == null)
{
ds = bllViewdepclass.GetReportData(ds, "view_dep_class", "");
}
else
{
ds = bllViewdepclass.GetReportData(ds, "view_dep_class", strWhere.ToString());
}
string rptPath = Server.MapPath("~/rpt/Depclass.rpt");
log.Info("加载报表路径:" + rptPath);
rd.Load(rptPath);
rd.SetDataSource(ds);
this.CRVDepclass.ReportSource = rd;
this.CRVDepclass.DataBind();
5、运行aspx页面就可以将数据库中的数据显示到水晶报表中了