u Visual studio 2008 自带水晶报表10
u asp.net网站中的简单应用
u 本次示例目的只是让刚接触水晶报表的朋友掌握其应用,因此示例以简单,简洁,清晰为主,没有连接后台数据库。
Visual studio 2008新建asp.net网站CrystalReportsDemo如图:
右击项目——>添加引用:
添加一个实体类DemoModel.cs
本网站没有采用任何开发模式,所以类代码应该放到asp.net文件夹App_Code里,可以先在项目里新建此文件夹,也可以在添加类时根据系统提示新建:
DemoModel.cs的内容如下:
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
/// <summary>
///DemoModel 一个实体对象
/// </summary>
public class DemoModel
{
public DemoModel()
{ }
public DemoModel(string id,string name)
{
this.id = id;
this.name = name;
}
private string id;//编码
public string Id
{
get { return id; }
set { id = value; }
}
private string name;//名称
public string Name
{
get { return name; }
set { name = value; }
}
}
右击项目——>添加新项——>Crystal报表
命名为:CrystalReport.rpt 确定后会自动弹出以下提示:
创建新的Crystal Report 文档有三种单选,选择专家有三种:
可以选择空报表然后在打开的报表中右键——>报表专家(效果一样),默认使用报表向导,选择专家为标准(一般就会用到),点击确定
项目数据——>.Net对象
看到刚才添加的实体对象DemoModel.cs当然这只是数据源的一种
注:上面这个实体类和水晶报表文件属同一程序集可以找到,当网站采用N层模式开发时,实体类另为一程序集,在这里就不能这样找到了,可以采取别的数据源
选中DemoModel 添加到右侧如下图:
点击下一步对报表具体要显示的字段进行设置
这里自己定义报表格式,直接点击完成
左侧可以看到上面有报表头,页眉,详细资料,报表尾,页脚这些都为设计报表格式提供方便,在相应区域点击右键可以对其进行设置,当会应用水晶报表之后可以尝试,在这里我们只对详细资料区,进行简单设置
从右侧,字段资源管理器
数据库字段,找到刚才添加的数据源DemoModel,可以看到对象的属性,将要显示的字段拖到左侧 详细资料区如图:
当然这里的显示的样式可以自己定义,大家可以尝试,右键有很多操作
注:此报表并未涉及到变量,所以至此,报表设计完毕,保存
关闭报表窗口,这时项目目录如图:
下面在页面Default.aspx中显示刚刚设计的水晶报表
从工具箱报表一栏中拖一个可以显示水晶报表的控件
CrystalReportViewer其它工作都可以不做,
Default.aspx页面内的代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
Namespace="CrystalDecisions.Web" TagPrefix="CR" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="true" />
</div>
</form>
</body>
</html>
Default.aspx.cs页面后置类的内容如下:
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
//引入命名空间
//用到List,并且有泛型
using System.Collections;
using System.Collections.Generic;
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//创建报表文档
ReportDocument myReport = new ReportDocument();
//取到报表文件物理路径
string reportPath = Server.MapPath("~/CrystalReport.rpt");
//加载报表文件
myReport.Load(reportPath);
//***************************************************************
/*由于没有连接数据库,所以我们为了显示效果来自己添加一个数据源
在报表中我们用到了实体对象,在这里我们自己手动加入以下几个对象
并装入一个List集合中,当然以后要是连接数据库也是主要修改数据源
其它不用太大改动*/
DemoModel dm1 = new DemoModel("10001","demo1");
DemoModel dm2 = new DemoModel("10002", "demo2");
DemoModel dm3 = new DemoModel("10003", "demo3");
DemoModel dm4 = new DemoModel("10004", "demo4");
List<DemoModel> dmList = new List<DemoModel>();
dmList.Add(dm1);
dmList.Add(dm2);
dmList.Add(dm3);
dmList.Add(dm4);
//至此数据源对象添加完毕
//*****************************************************************
//为新的报表文档设置数据源
myReport.SetDataSource(dmList);
//将创建的新的报表文档绑定
this.CrystalReportViewer1.ReportSource = myReport;
this.CrystalReportViewer1.DataBind();
}
}