共用方式為


為專案選擇正確的物件模型

若要為專案選擇正確的物件模型,您必須瞭解如何使用 CrystalReportViewer 控制項的最佳作法,而且要知道 CrystalReportViewer 如何與其他物件模型互動。

使用 CrystalReportViewer 控制項的最佳作法

有效的 Web 應用程式會明確區分展示層和基礎商務邏輯。

ASP.NET 控制項的設計會自然助長那種模式。它會將展示資訊封裝到控制項中,然後將該控制項繫結至基礎物件或執行商務邏輯的物件模型。

CrystalReportViewer 是依附於這個架構的 .NET 控制項。它可以用來當作 Web 或 Windows Form (展示層) 上的顯示物件,並且可以繫結至下列任何一個報表物件模型:

  • ReportDocument 物件模型
  • 藉由升級而提供的物件模型:
    • ReportClientDocument 物件模型 (報表應用程式伺服器)
    • InfoObject 物件模型 (Crystal Reports Server 或 BusinessObjects Enterprise)

在最佳作法的案例中,CrystalReportViewer 控制項會繫結至某個執行通常用以操控報表之商務邏輯的物件模型。

在此案例中,CrystalReportViewer 控制項會限制其程式設計互動,而只能修改顯示設定 (例如,隱藏或顯示檢視器的工具列或該工具列上的按鈕)。

CrystalReportViewer 物件模型

CrystalReportViewer 控制項所包含的屬性及方法,可以啟用報表顯示的互動設定。它也有少數的屬性及方法,可與繫結至控制項的報表進行互動。這些屬性及方法組成了限制的物件模型。

一些報表繫結案例需依賴 CrystalReportViewer 物件模型。在案例中,CrystalReportViewer 控制項會直接繫結至報表 (例如,傳入位於檔案目錄中之報表的路徑字串),而不需先將報表封裝到物件模型中。而在某些案例中,因為 CrystalReportViewer 控制項會直接封裝報表,您必須依賴控制項的限制物件模型,與報表進行程式設計互動。

但在大部分繫結案例中,並不鼓勵使用 CrystalReportViewer 做為物件模型。而是使用 ReportDocument 物件模型來代替,理由如下:

  • CrystalReportViewer 物件模型會提高物件模型衝突的風險。如需詳細資訊,請參閱「避免混用物件模型」
  • CrystalReportViewer 物件模型提供與報表的有限互動;只包含 ReportDocument 物件模型中可用功能的一小部份。
  • CrystalReportViewer 物件模型會讓展示層和基礎商務邏輯間的區隔在程式碼中變得模糊不清。

ReportDocument 物件模型

ReportDocument 是比CrystalReportViewer 更具威力且更為龐大的物件模型。此物件模型隨附於 Crystal Reports for Visual Studio SDK,提供可從程式碼操控報表的進階功能。

如需 ReportDocument 物件模型的說明及圖表,請參閱「架構」之下的「ReportDocument 物件模型」

如需示範如何針對 ReportDocument 物件模型編寫程式碼的教學課程,請參閱「ReportDocument 物件模型教學課程」

升級的物件模型

如果將報表解決方案升級至 Crystal Reports Server 或 BusinessObjects Enterprise,您就可以充分利用它們的物件模型、ReportClientDocument 和 InfoObject。

Note附註

如果不確定要為應用程式部署哪一個報表解決方案,請參閱「比較所有 Business Objects 報表解決方案之間的架構」

應該使用哪一個物件模型?

如果不打算升級至 Crystal Reports Server 或 BusinessObjects Enterprise,建議您使用 ReportDocument 物件模型搭配 Crystal Reports SDK 進行開發工作。

Note附註

在 Crystal Reports 10 或更新版本,以及 Crystal Reports for Visual Studio 2005 和後續版本中,ReportDocument 物件模型已銜接到 ReportClientDocument 物件模型,以便於升級至 Managed 報表解決方案。