.net中水晶报表使用

本次示例目的只是让刚接触水晶报表的朋友掌握其应用,因此示例以简单,简洁,清晰为主,没有连接后台数据库。

Visual studio 2008新建asp.net网站CrystalReportsDemo如图:

右击项目——>添加引用:

添加一个实体类DemoModel.cs

本网站没有采用任何开发模式,所以类代码应该放到asp.net文件夹App_Code里,

可以先在项目里新建此文件夹,也可以在添加类时根据系统提示新建:

DemoModel.cs的内容如下:

[csharp]  view plain copy
  1. using System;  
  2. using System.Data;  
  3. using System.Configuration;  
  4. using System.Linq;  
  5. using System.Web;  
  6. using System.Web.Security;  
  7. using System.Web.UI;  
  8. using System.Web.UI.HtmlControls;  
  9. using System.Web.UI.WebControls;  
  10. using System.Web.UI.WebControls.WebParts;  
  11. using System.Xml.Linq;  
  12.   
  13. /// <summary>  
  14. ///DemoModel 一个实体对象  
  15. /// </summary>  
  16. public class DemoModel  
  17. {  
  18.     public DemoModel()  
  19.     {   }  
  20.     public DemoModel(string id,string name)  
  21.     {  
  22.         this.id = id;  
  23.         this.name = name;  
  24.     }  
  25.     private string id;//编码  
  26.   
  27.     public string Id  
  28.     {  
  29.         get { return id; }  
  30.         set { id = value; }  
  31.     }  
  32.     private string name;//名称  
  33.   
  34.     public string Name  
  35.     {  
  36.         get { return name; }  
  37.         set { name = value; }  
  38.     }  
  39. }  

右击项目——>添加新项——>Crystal报表

命名为:CrystalReport.rpt 确定后会自动弹出以下提示:

创建新的Crystal Report 文档有三种选择:

可以选择空报表然后在打开的报表中右键——>报表专家(效果一样),

默认使用报表向导,选择专家为标准(一般就会用到),点击确定

项目数据——>.Net对象

看到刚才添加的实体对象DemoModel.cs当然这只是数据源的一种

注:上面这个实体类和水晶报表文件属同一程序集可以找到,当网站采用N层模式开发时,

实体类另为一程序集,在这里就不能这样找到了,可以采取别的数据源

选中DemoModel 添加到右侧如下图:

点击下一步对报表具体要显示的字段进行设置

这里自己定义报表格式,直接点击完成

左侧可以看到上面有报表头,页眉,详细资料,报表尾,页脚这些都为设计报表格式提供方便,在相应区域点击

右键可以对其进行设置,当会应用水晶报表之后可以尝试,在这里我们只对详细资料区,进行简单设置从右侧,字段资源管理器

数据库字段,找到刚才添加的数据源DemoModel,可以看到对象的属性,将要显示的字段拖到左侧 详细资料区如图:

当然这里的显示的样式可以自己定义,大家可以尝试,右键有很多操作此报表涉及到参数,在右侧字段资源管理器

参数字段(右击)——新建:

点击确定(参数字段中添加一个参数args_1),按上述方法再同样添加一个参数args_2 如图:

在报表里要显示从外部传过来的两个参数值,现在将参数字段中的两个参数拖到报表的页眉区:

在页眉区的显示的id,name字段是报表的表头,我们可以自己定义名称,右击——>编辑文本对象(改名):

到此对报表的设置完成,保存,关闭水晶报表窗口

这时项目目录如图:

下面在页面Default.aspx中显示刚刚设计的水晶报表

从工具箱报表一栏中拖一个可以显示水晶报表的控件

CrystalReportViewer其它工作都可以不做,

Default.aspx页面内的代码如下:

[html]  view plain copy
  1. <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>  
  2. <%@ Register Assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"  
  3.     Namespace="CrystalDecisions.Web" TagPrefix="CR" %>  
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  5. <html xmlns="http://www.w3.org/1999/xhtml">  
  6. <head runat="server">  
  7.     <title>无标题页</title>  
  8. </head>  
  9. <body>  
  10.     <form id="form1" runat="server">  
  11.     <div>  
  12.         <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="true" />  
  13.     </div>  
  14.     </form>  
  15. </body>  
  16. </html>  

Default.aspx.cs页面后置类的内容如下:

[csharp]  view plain copy
  1. using System;  
  2. using System.Configuration;  
  3. using System.Data;  
  4. using System.Linq;  
  5. using System.Web;  
  6. using System.Web.Security;  
  7. using System.Web.UI;  
  8. using System.Web.UI.HtmlControls;  
  9. using System.Web.UI.WebControls;  
  10. using System.Web.UI.WebControls.WebParts;  
  11. using System.Xml.Linq;  
  12.   
  13. //引入命名空间  
  14. //用到List,并且有泛型  
  15. using System.Collections;  
  16. using System.Collections.Generic;  
  17. using CrystalDecisions.Shared;  
  18. using CrystalDecisions.CrystalReports.Engine;  
  19.   
  20. public partial class _Default : System.Web.UI.Page   
  21. {  
  22.     protected void Page_Load(object sender, EventArgs e)  
  23.     {  
  24.         //创建报表文档  
  25.         ReportDocument myReport = new ReportDocument();  
  26.         //取到报表文件物理路径  
  27.         string reportPath = Server.MapPath("~/CrystalReport.rpt");  
  28.         //加载报表文件  
  29.         myReport.Load(reportPath);  
  30.   
  31.         //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  
  32.         /*报表显示需要的参数,这里我们是自己定义两个参数根据参数 */  
  33.         string args_1 = "第一个参数";  
  34.         string args_2 = "第二个参数";  
  35.         //将定义好的两个外部参数传入报表  
  36.   
  37.         ParameterFields paramFields = new ParameterFields();  
  38.   
  39.         ParameterField pargs_1 = new ParameterField();  
  40.         ParameterField pargs_2 = new ParameterField();  
  41.         // 设置在报表中,将要接受的参数字段的名称  
  42.         pargs_1.ParameterFieldName = "args_1";  
  43.         pargs_2.ParameterFieldName = "args_2";  
  44.   
  45.         ParameterDiscreteValue pdargs_1 = new ParameterDiscreteValue();  
  46.         ParameterDiscreteValue pdargs_2= new ParameterDiscreteValue();  
  47.   
  48.         pdargs_1.Value = args_1;  
  49.         pdargs_2.Value = args_2;  
  50.   
  51.         pargs_1.CurrentValues.Add(pdargs_1);  
  52.         pargs_2.CurrentValues.Add(pdargs_2);  
  53.   
  54.         paramFields.Add(pargs_1);  
  55.         paramFields.Add(pargs_2);  
  56.     
  57.         // 将参数集合绑定到报表浏览控件  
  58.         this.CrystalReportViewer1.ParameterFieldInfo = paramFields;  
  59.         //参数设置完成  
  60.         //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  
  61.   
  62.         //***************************************************************  
  63.         /*由于没有连接数据库,所以我们为了显示效果来自己添加一个数据源  
  64.          在报表中我们用到了实体对象,在这里我们自己手动加入以下几个对象  
  65.          并装入一个List集合中,当然以后要是连接数据库也是主要修改数据源  
  66.          其它不用太大改动*/  
  67.         DemoModel dm1 = new DemoModel("10001","demo1");  
  68.         DemoModel dm2 = new DemoModel("10002""demo2");  
  69.         DemoModel dm3 = new DemoModel("10003""demo3");  
  70.         DemoModel dm4 = new DemoModel("10004""demo4");  
  71.         List<DemoModel> dmList = new List<DemoModel>();  
  72.         dmList.Add(dm1);  
  73.         dmList.Add(dm2);  
  74.         dmList.Add(dm3);  
  75.         dmList.Add(dm4);  
  76.         //至此数据源对象添加完毕  
  77.         //*****************************************************************  
  78.   
  79.         //为新的报表文档设置数据源  
  80.         myReport.SetDataSource(dmList);  
  81.         //将创建的新的报表文档绑定  
  82.         this.CrystalReportViewer1.ReportSource = myReport;  
  83.         this.CrystalReportViewer1.DataBind();  
  84.     }  
  85. }  

以实体对象为水晶报表数据源

加入参数的开发方式完毕,编译运行后可以得到如下效果:

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值