打印自定義報表
DXPrinting Library提供了一種創建自定義打印報表的簡單方法,這種方法是基于稱為打印鏈接的特殊打印程序。DXPrinting Library引入了幾種類型的 printing links,每種鏈接都是為呈現特定的數據對象、創建報表以及導出和打印報表而設計的,可以通過從LinkBase抽象類繼承您的類來創建自定義打印鏈接。
下表列出了內置的打印鏈接類型。
打印鏈接 | 描述 |
---|---|
SimpleLink | 呈現包含線性數據的數據對象。 |
CollectionViewLink | 呈現包含分層數據的數據對象,并實現ICollectionView 接口。 |
PrintableControlLink | DevExpress呈現控件。 |
創建簡單鏈接
簡單的打印鏈接通常用于在報表中顯示非分層數據,在不需要將數據項分成組的情況下使用這種鏈接。

創建后,必須為簡單鏈接提供數據。要做到這一點,通過SimpleLink.DetailCount屬性指定數據項的數量,并處理SimpleLink.CreateDetail事件,每次需要新的數據項時都會引發該事件,并根據SimpleLink.DetailCount屬性指定的次數引發該事件,在處理程序中,將新的數據項分配給CreateAreaEventArgs.Data事件參數的屬性,所需數據項的索引可以使用CreateAreaEventArgs.DetailIndex屬性獲得。
除了數據項之外,還必須指定可視化表示。要做到這一點,創建一個 ,它應該應用于每個數據項,然后將其分配給鏈接的SimpleLink.DetailTemplate屬性。
創建集合視圖鏈接
當您需要在報表中顯示來自分層數據源的數據,或者當數據項應該分成幾個組顯示時,集合視圖打印鏈接非常有用。

要將數據分配給集合視圖鏈接,需要創建一個實現ICollectionView接口的對象,它可以是System.Windows.Data.CollectionViewSource對象,向該對象提供數據后,將其分配給鏈接的CollectionViewLink.CollectionView屬性。
當指定數據時,您應該定義其可視化表示。要做到這一點,創建一個DataTemplate應該應用于每個數據項,并將其分配給鏈接的CollectionViewLink.DetailTemplate屬性。為了提供關于分組信息的鏈接,為每個分組級別創建一個GroupInfo對象,并通過GroupInfo.HeaderTemplate屬性指定一個應該應用于當前分組級別中的每個組頭的模板,然后將GroupInfo對象添加到鏈接的CollectionViewLink.GroupInfos 集合中。
創建可打印控件鏈接
可打印控件鏈接用于呈現控件和實現IPrintableControl或IRootDataNode接口的數據對象。例如,TableView對象可以通過可打印控件鏈接呈現。

要創建一個可打印的控件鏈接,將適當的控件或數據對象傳遞給PrintableControlLink構造函數。
頁面設置
DXPrinting Library提供了許多設置,允許自定義報表的頁面選項。
您可以在報表中包含頁眉和頁腳,以及整個文檔的頁眉和頁腳。要做到這一點,分別通過TemplatedLink.PageHeaderTemplate、TemplatedLink.PageFooterTemplate、TemplatedLink.ReportHeaderTemplate和TemplatedLink.ReportFooterTemplate 屬性指定它們的模板。通過將適當的數據對象分別分配給TemplatedLink.PageHeaderData、TemplatedLink.PageFooterData、TemplatedLink.ReportHeaderData和TemplatedLink.ReportFooterData屬性,這些模板也可以提供一些自定義數據。
下表列出了用于指定報表頁設置的其他屬性。
屬性 | 描述 |
---|---|
LinkBase.CustomPaperSize | 獲取或設置自定義紙張的大小(以百分之一英寸為單位測量)。 |
LinkBase.DocumentName | 獲取或設置文檔的名稱。 |
LinkBase.Landscape | 獲取或設置一個值,該值指示頁面方向是否為橫向。 |
LinkBase.Margins | 獲取或設置報表頁面的邊距(以百分之一英寸為單位測量)。 |
LinkBase.MinMargins | 指定最小打印機邊距值。 |
LinkBase.PaperKind | 獲取或設置文檔的紙張類型。 |
LinkBase.SuppressAutoRebuildOnPageSettingsChange | 獲取或設置一個值,該值指示是否有必要在每次更改鏈接的頁面設置時禁止重建文檔。 |
導出和打印報表
在創建鏈接對象并提供數據之后,您可以通過調用LinkBase.CreateDocument方法從鏈接創建文檔,現在報表生成了就可以打印和導出它,也可以在DocumentPreview控件中顯示它。要做到這一點,有必要創建一個新的LinkPreviewModel實例,將當前鏈接作為初始化參數,并將其分配給DocumentPreview.Model屬性。
使用LinkBase.ShowPrintPreview方法可打開報表預覽窗口。要打開一個模式預覽窗口,使用LinkBase.ShowPrintPreviewDialog方法,打印對話框可以通過LinkBase.Print方法調用,要在不打開任何對話框的情況下打印報告,請使用LinkBase.PrintDirect方法。
下表列出了用于將報表導出為不同格式的方法。
方法 | 描述 |
---|---|
LinkBase.ExportToCsv | 使用指定的CSV特定選項,用CSV格式將報表導出到指定的流。 |
LinkBase.ExportToHtml | 使用指定的特定于HTML的選項,用HTML格式將報告導出到指定的流。 |
LinkBase.ExportToImage | |
LinkBase.ExportToMht | 使用指定的MHT特定選項用MHT格式將報告導出到指定流。 |
LinkBase.ExportToPdf | 使用指定的PDF特定選項用PDF格式將報表導出到指定的流。 |
LinkBase.ExportToRtf | 使用指定的RTF特定選項用RTF格式將報表導出到指定的流。 |
LinkBase.ExportToText | 使用指定的特定于文本的選項用文本格式將報表導出到指定的流。 |
LinkBase.ExportToXls | 使用指定的特定于XLS的選項用XLS格式將報告導出到指定的流。 |
LinkBase.ExportToXlsx | 使用指定的特定于XLSX的選項,用XLSX格式將報告導出到指定的流。 |
LinkBase.ExportToXps | 使用指定的特定于XPS的選項用XPS格式將報表導出到指定的流。 |