学习水晶报表

20 篇文章 0 订阅

学习网址:1.http://www.56.com/u88/v_NTc5OTI2MDU.html

 

2.http://blog.csdn.net/bobby7514650/article/details/5803596

 

3. http://msdn.microsoft.com/zh-cn/library/bb944221(v=vs.90)

 

4.http://hi.baidu.com/sukun/blog/item/e6c54716e5a82d5920a4e9b8.html

 

一、pull模式下(手动绑定无需代码)

有Web下。创建一个CrystalReportViewPage.aspx文件

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

<%@ 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>
        <asp:Button ID="btnShowCrystalReportView" runat="server" Text="显示报表" 
            οnclick="btnShowCrystalReportView_Click" />
        
        <CR:CrystalReportSource ID="CrystalReportSource1" runat="server">
        </CR:CrystalReportSource>
        <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" 
            AutoDataBind="true" />
        
    </div>
    </form>
</body>
</html>

在CrystalReportViewPage.aspx.cs文件代码如下

using System;
using System.Collections;
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;

//1.引入命名空间
using CrystalDecisions.CrystalReports.Engine;//为 ReportDocument 对象模型提供支持
using CrystalDecisions.Shared;//提供由 CrystalReportViewer 控件和 ReportDocument 对象模型共享的类、接口和枚举

public partial class CrystalReportViewPage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //第二种方法:

        //2_1.水晶报表文档加载水晶报表模板
        ReportDocument rptDoc = new ReportDocument();
        rptDoc.Load(Server.MapPath("Test2.rpt"));//WinFrom下为:rptDoc.Load(Application.StartupPath+"Test2.rpt");
        //2_2.设置登录信息
        TableLogOnInfo logInfo = new TableLogOnInfo();
        logInfo.ConnectionInfo.ServerName = ".";
        logInfo.ConnectionInfo.UserID = "sa";
        logInfo.ConnectionInfo.Password = "*****";
        logInfo.ConnectionInfo.DatabaseName = "Test1";

        //2_3.为每一表设置登录信息
        for (int i = 0; i < rptDoc.Database.Tables.Count; i++)
        {
            rptDoc.Database.Tables[i].ApplyLogOnInfo(logInfo);
        }
        //2_4.绑定数据源(数据源为水晶报表文档)
        CrystalReportViewer1.ReportSource = rptDoc;
    }

    /// <summary>
    /// pull模式
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnShowCrystalReportView_Click(object sender, EventArgs e)
    {
        //第一种方法:
        
        //1_2.加载水晶报表模板
        CrystalReportSource1.ReportDocument.Load(Server.MapPath("Test2.rpt"));
        //1_3.设置登录信息(水晶报表要打印的数据库)
        CrystalReportSource1.ReportDocument.SetDatabaseLogon("sa","*****",".","Test1");
        //1_4.给水晶报表传参数,参数一:参数名;参数二:参数值
        CrystalReportSource1.ReportDocument.SetParameterValue("Title", "学生信息表");
        CrystalReportSource1.ReportDocument.SetParameterValue("Parm", "1");

        //1_5.绑定水晶报表数据源
        CrystalReportSource1.DataBind();
        //6.CrystalReportViewer水晶报表浏览器,并赋上对象
        CrystalReportViewer1.ReportSource = CrystalReportSource1;
        CrystalReportViewer1.DataBind();
        
    }
}



 效果如下:

二、push模式

1.在web.config文件的connectionStrings节点设置连接字符串

<add name="DXZWConnectionString" connectionString="server=.;Initial Catalog=对虾专网;Integrated Security=True" providerName="System.Data.SqlClient"/>


2.创建数据访问类Goods.cs,代码如下:

using System.Data.Common;
using System.Data.SqlClient;

/// <summary>
///GoodsInfo 的摘要说明
/// </summary>
public class Goods
{
    public static DataTable getDataTable()
    {
        string constr = ConfigurationManager.ConnectionStrings["DXZWConnectionString"].ConnectionString;
        using (SqlConnection conn = new SqlConnection(constr))
        {
            string sqlstr = "SELECT [ID],[GoodsCategoryID],[GoodsName],[GoodsUnit],[GoodsDescript],[GoodsPrice],[GoodsDiscount],[GoodsStock],[GoodsSaleSum],[GoodsCreateDate],[GoodsClickCount],[GoodsPicture] FROM [对虾专网].[dbo].[Goods]";
            SqlDataAdapter da = new SqlDataAdapter(sqlstr, conn);
            DataSet ds = new DataSet();
            da.Fill(ds);
            return ds.Tables[0]; 
        }
    }
}


3.创建水晶报表模板,如图

5.显示水晶报表(创建一个页面,CS页面代码如下)

using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;

public partial class GoodsInfo : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        ReportDocument rptDoc = new ReportDocument();
        rptDoc.Load(Server.MapPath("CrystalReport.rpt"));//WinFrom下为:rptDoc.Load(Application.StartupPath+"Test2.rpt");
        rptDoc.SetDataSource(Goods.getDataTable());
        CrystalReportViewer1.ReportSource = rptDoc;
    }
}


6.浏览页面即可。

有关pull、push模式理解见http://blog.csdn.net/vs_url/article/details/7626543

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值