.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
简单实现Crystal Report的动态加载

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

      crystal reprot 为我们开发报表提供了很大的便利,但是它不能实现runtime时数据自定义,给开发带来了不完美。不过虽然我们不能runtime自定义数据,但我们还是可以实现runtime自定义加载报表。
       要实现自定义加载报表,要使用推模式报表生成。(拉模式我没有试过,哪位网友要是实现了可以告诉我:) )
       回顾一下推模式的操作过程,在利用生成报表的那一步中,我们选择空报表。这个时候在解决方案中生成一个report.rpt(假定是这个名字),但是我们在方案目录下,我们还可以看到一个同名的report.cs。这个文件就是我们这次讨论的关键。我们先来看看这个文件有什么。

namespace WebApp_Crystal_Dynametic {
using System;
using System.ComponentModel;
using CrystalDecisions.Shared;
using CrystalDecisions.ReportSource;
using CrystalDecisions.CrystalReports.Engine;

public class Report : ReportClass {

public Report() {
}

public override string ResourceName {
get {
return "Report.rpt";
}


}
……

       看到红色高亮的程序吗?当我们向report推数据的时候report类如何把数据绑定到合适报表中呢,就是靠这个代码了!既然如此,那么我们如果能够动态改变它的返回值就可以动态加载报表了,让我们来试试。下面是我修改后的代码:

namespace WebApp_Crystal_Dynametic {
using System;
using System.ComponentModel;
using CrystalDecisions.Shared;
using CrystalDecisions.ReportSource;
using CrystalDecisions.CrystalReports.Engine;


public class Report : ReportClass {
string resourcename = "Report.rpt";
public Report() {
}

public override string ResourceName {
get {
return resourcename;
}
set {
resourcename = value;
}

}
……

       好现在我们再新建几个不同的报表(都是推模式的),在程序中我添加了几个button,不同的button事件中加载不同的报表,并把不同的数据推向报表。程序编译运行通过(window server 2003 + vs.net 2003)。

       这样我们只要在程序中使用plugin模式,就可以在不改变源代码的情况下为程序添加新的报表文件。




相关文章

相关软件