水晶报表使用:
水晶报表分拉模式和推模式
拉模式是直接从数据库拉取数据绑定到视图上
推模式是通过dataset从数据库取到数据,再绑定到视图上
1.添加视图和数据源
将水晶报表文件CrystalReportViewer和CrystalReportSource拖放至页面default.aspx,
default.aspx代码
<%@ Register Assembly="CrystalDecisions.Web, Version=10.2.3600.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>
<link href="/aspnet_client/System_Web/2_0_50727/CrystalReportWebFormViewer3/css/default.css"
rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server"/>
<CR:CrystalReportSource ID="CrystalReportSource1" runat="server"/>
</div>
</form>
</body>
</html>
default.aspx.cs代码
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
databind();
}
//推模式,需要自己取dataset
private void databind()
{
string sql = "select * from Employees";
string constr = "server=.;uid=sa;pwd=123;database=Northwind";
DataSet ds = new DataSet();
SqlConnection sqlcon = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand(sql, sqlcon);
SqlDataAdapter sqlda = new SqlDataAdapter();
sqlda.SelectCommand = cmd;
sqlda.Fill(ds);
CrystalReportSource1.ReportDocument.Load(Server.MapPath("CrystalReport.rpt"));
CrystalReportSource1.ReportDocument.SetDataSource(ds.Tables[0]);
CrystalReportViewer1.ReportSource = CrystalReportSource1;
}
//拉模式,直接从数据库拉取
//private void databind()
//{
//CrystalReportViewer1.ReportSource = CrystalReportSource1;
//}
}
2.添加rpt文件
右击项目-->添加新项-->选中Crystal报表-->添加CrystalReport.rpt-->作为空白报表(或使用报表向导,视情况而定)-->确定
然后就是将字段拖放到CrystalReport.rpt
字段可以从数据集中拖放(参见步骤3)
或从数据库表引用(参见步骤4)
3.建立数据集(也就是建立在rpt文件中使用的字段)
右击项目-->添加新项-->选中数据集-->添加DataSet1.xsd
在DataSet1.xsd视图上右键添加DataTable-->重命名表名Employees-->右键添加列定义列
表和列定义完后
在CrystalReport.rpt中右键数据库-->数据库专家-->项目数据-->ADO.NET数据集-->DataSet1-->Employees-->添加到右边-->确定
在CrystalReport.rpt中右键字段资源管理器-->右边数据库字段-->>Employees-->选中字段拖放到CrystalReport.rpt中
4.直接引用数据库表
在CrystalReport.rpt中右键数据库-->数据库专家-->创建新连接-->OLE DB(ADO)-->Microsoft OLE DB Provider for SQL Server-->下一步-->输入数据库帐号密码,选择相应数据库(如Northwind)-->完成
OLE DB(ADO)可以看到Northwind-->展开选中需要的表-->添加到右边-->确定
在CrystalReport.rpt中右键字段资源管理器-->右边数据库字段-->选中字段拖放到CrystalReport.rpt中
示例下载:WebSite1.rar