先新建一个Web项目: CrystalWebApp
为项目添加新项: CrystalReport1.rpt
在弹出的对话框,选择作为空白报表。用向导当然更方便,但在这里,白手起家或许能更好地理解。
在工具箱选择 Text Object,拖到报表头。写些字,设置字体之类的。在属性选项卡设置它的名字为 txtTitle 以供将来程序访问。
水晶报表对于程序员来说其实跟 Repeater 控件是很相似的。于是需要数据和字段名。在Repeater 控件中你可以很随意地指定要绑定的字段名。在程序还没有真正运行之前,这个字段名可以没有任何表的字段名跟它匹配,也可以没有任何类的属性名跟它匹配。但在水晶报表中,字段名在设计阶段就必须是真实存在的。还能稍感安慰的是,水晶报表一旦设计好之后,就能像 Repeater 控件那样绑定任意类型的对像。而不必是设计时指定字段来源的表或类。所以我们现在要创造些真实存在的字段名……
create table TabTest
(
UserID int,
UserName nvarchar(50),
Age int,
Birthday datetime
)
你可以用 Access 或者 Excel 来创造真实存在的字段名,但我这里是使用 SQL Server。
在 "字段资源管理器" 的 "数据库字段" 上按右键,选择 "数据库专家..."。在弹出的对话框中,创建新连接==>OLE DB (ADO)(Access 或者 Excel 应点 "数据库文件" 前的 "+" 号)。 在弹出的对话框,选择 "SQL Native Client" 作为提供程序。
按提示一步步地做,直到连上数据库。选择表 TabTest,把它弄到右边的框中。再点击确定。
折腾了半天就是为了这些字段名。对水晶报表的开发商无语……
把需要显示的字段拖到 "详细资料"。"页眉" 和 Word 文档中的页眉完全不是一回事。这里的页眉其实就是列名(表头)。那么就顺便改一下列名吧。默认是有下划线的,可以改一下格式。
"页脚" 倒是跟 Word 文档中的页脚概念相同,可以拖个特殊字段页码进去。
点击工具箱中的 Line Object 可以为报表画线。你会发现,画一个表格竟然是如此地困难。
在报表空白处按右键,设计==>打印机设置 也许有你想要的东西。
那么专业的事情应该交给那么专业的人士去做,我们的任务是写代码……
进入 Default.aspx 的设计视图,从工具箱中拖个 CrystalReportViewer 过来。
接下来需要数据。数据当然可以是来自设计时的表。但我这里是来自于新建的类: UserInfo。在项目中添加一个 UserInfo 类。
using System;
namespace CrystalWebApp
{
public class UserInfo
{
private int userID;
public int UserID
{
get { return userID; }
set { userID = value; }
}
private string userName;
public string UserName
{
get { return userName; }
set { userName = value; }
}
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
private DateTime birthday;
public DateTime Birthday
{
get { return birthday; }
set { birthday = value; }
}
}
}
为 Default.aspx 写些后台代码
。。。