在云那方

首页 新随笔 联系 订阅 管理

水晶报表使用:

水晶报表分拉模式和推模式
拉模式是直接从数据库拉取数据绑定到视图上
推模式是通过dataset从数据库取到数据,再绑定到视图上


1.添加视图和数据源
将水晶报表文件CrystalReportViewer和CrystalReportSource拖放至页面default.aspx,

default.aspx代码

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<%@ 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;
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

posted on 2008-11-21 22:55  Rich.T  阅读(684)  评论(0编辑  收藏  举报