簡單實現Crystal Report的動態載入 (轉)

amyz發表於2007-11-13
簡單實現Crystal Report的動態載入 (轉)[@more@]

  crystal reprot 為我們開發報表提供了很大的便利,但是它不能實現runtime時資料自定義,給開發帶來了不完美。不過雖然我們不能runtime自定義資料,但我們還是可以實現runtime自定義載入報表。
  要實現自定義載入報表,要使用推報表生成。(拉模式我沒有試過,哪位網友要是實現了可以告訴我:) )
  回顧一下推模式的操作過程,在利用生成報表的那一步中,我們選擇空報表。這個時候在解決方案中生成一個report.rpt(假定是這個名字),但是我們在方案目錄下,我們還可以看到一個同名的report.cs。這個就是我們這次討論的關鍵。我們先來看看這個檔案有什麼。

namespace App_Crystal_Dynametic {
using System;
using System.ComponentModel;
using CrystalDecisions.Shared;
using CrystalDecisions.Report;
using CrystalDecisions.CrystalReports.Engine;

public class Report : ReportClass {

public Report() {
}

public overr 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 + vs 2003)。

  這樣我們只要在程式中使用plugin模式,就可以在不改變的情況下為程式新增新的報表檔案。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-982161/,如需轉載,請註明出處,否則將追究法律責任。

相關文章