水晶报表有pull及push两种模式,本文采用web工程中的push模式;
报表模拟产品定单,涉及到Product,ProductOrder,Client三张表。
1.创建一个设计时的dataset,在Database Expert中建立表之前的链接关系,如下图:
2.创建一个.rpt文件并指向我们前面创建的dataset,名为PullCrystalReport3.rpt 如下图:

3.在.aspx页面上放置Crystal Report Viewer控件
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Pull3.aspx.cs" Inherits="Pull3" %>
<%@ 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>
4.在code behind page中,加入如下代码:
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter();
string connectionStr = "Data Source=.;Initial Catalog=CrystalReport;Persist Security Info=True;User ID=sa;Password=111";
SqlConnection connection = new SqlConnection(connectionStr);
//设置数据源
da = new SqlDataAdapter("select * from Client", connection);
da.Fill(ds, "Client");
da = new SqlDataAdapter("select * from Product", connection);
da.Fill(ds, "Product");
da = new SqlDataAdapter("select * from ProductOrder", connection);
da.Fill(ds, "ProductOrder");
//设置报表文档
string reportPath = Server.MapPath("~/PullCrystalReport3.rpt");
ReportDocument rpt = new ReportDocument();
rpt.Load(reportPath);
rpt.SetDataSource(ds);
//为CrystalReportViewer指定数据源
CrystalReportViewer1.ReportSource = rpt;
5.最终效果如下:

浙公网安备 33010602011771号