在應用程式中,通常我們都需要顯示報表。在.net中,我們大多數情況使用了水晶報表,如果我們不是直接將報表傳送到印表機列印,那麼就需要將報表顯示出來,這種情況下需要使用報表檢視器(crystalreportviewer)。
crystalreportviewer作為乙個控制項,它需要乙個承載它的窗體或頁面,我們這裡只討論窗體(winform)的情況。大多數情況下,我們顯示報表的介面都是相同的,因此,我們一般會做乙個窗體類,來顯示我們不同的報表。在有的實現中,我們是在這個窗體類中例項化我們所需要的報表物件的,當我們每次要顯示不同的報表時,都需要去維護這個報表顯示窗體類,這樣會給我們帶來許多不便。更有甚者,把一些報表的邏輯也寫到了這個窗體類中,這樣嚴重違反了類的單一職責原則,並且使我們的報表與報表顯示之前有很強的依賴性。
為了遵循類的單一職責原則,破除它們之前的相互依賴性,在下面我將提供乙個實現水晶報表顯示的範例,這個範例的靈感**於 messagebox類,只提供了幾個靜態公共方法用於顯示報表:
using system;
using system.drawing;
using system.collections;
using system.componentmodel;
using system.windows.forms;
using crystaldecisions.crystalreports.engine;
using chiefvalueaccounting.util;
namespace chiefvalueaccounting.win.print
private static void initializecomponent()
///
/// 顯示水晶報表,要求呼叫方設定好報表物件的所有屬性。
///
/// 強型別的報表物件
public static void showreport(crystaldecisions.crystalreports.engine.reportclass reportclass, system.windows.forms.iwin32window owner)
catch(exception ex)
}///
/// 顯示水晶報表,要求呼叫方設定好報表物件的所有屬性。
///
/// 水晶報表文件物件
public static void showreport(crystaldecisions.crystalreports.engine.reportdocument reportdocument, system.windows.forms.iwin32window owner)
catch(exception ex)
}///
/// 顯示水晶報表。
///
/// 報表名稱
/// 報表資料來源
水晶報表 建立報表
水晶報表是乙個優秀的報表開發工具,本人在開發通用管理系統的時候,所有報表都使用水晶報表,其簡單 易用和強大的功能令筆者倍加喜愛,現將水晶報表使用手記呈現給大家。一 在使用自帶的水晶報表時,請註冊,否則只能使用30次 二 使用crystalreportviewer進行預覽 crystalreportv...
水晶報表 子報表
經過了一段時間對水晶報表的操作,我對其稍稍了解了一點點。這兩天,一直在為資料量太大而煩惱,我有六張表,其中一張關聯剩餘的五張表。想要顯示資料,結果,顯示不出來,即使我已經在鏈結裡面設定了左外連線。我知道這個是按照笛卡爾積相乘,所以資料會成倍的增加。所以,即使我改用直接連線資料庫的方式也行不通。就是p...
水晶報表匯出
private void page load object sender,system.eventargs e region web form designer generated code override protected void oninit eventargs e required me...