1 設定預設的列印紙張及頁面邊界
選擇Report-開啟屬性視窗,設定預設邊距(Margins)和預設紙張(PaperKind)。
2 修改Report Preview的預設工具列(WinForm)
一般情況下,Report 的Preview視圖中的工具列不用修改就可滿足使用。但是當想修改或添加新的按鈕執行自己的方法時就需要修改Preview工具列了。
2.1 擷取預設工具列
DevExpress.XtraBars.Bar bar = Report.PrintingSystem.PreviewFormEx.PrintBarManager.Bars[0];
PrintingSystem:當前Report的預設列印組件,用於提供預設的預覽列印對話方塊和列印功能。
可通過PrintingSystem.PreviewForEx.PrintBarManager擷取設定預覽列印視窗的工具列和菜單。
擷取DevExpress.XtraBars.Bar 之後就可以添加或刪除新的BarItem和Menu。
2.2 添加新的按鈕
bar.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
DevExpress.XtraBars.BarButtonItem printItem = new DevExpress.XtraBars.BarButtonItem(
printingSystem.PreviewFormEx.PrintBarManager, "列印", 1);
bar.AddItem(printItem);
2.3 隱藏不需要的按鈕
案例:隱藏列印按鈕
PrintingSystem.SetCommandVisibility(new PrintingSystemCommand[]{
PrintingSystemCommand.PrintDirect,PrintingSystemCommand.Print}, CommandVisibility.None);
SetCommandVisibility()方法:設定菜單和工具列按鍵的顯示及隱藏。
方法原形:
public void SetCommandVisibility(
PrintingSystemCommand[] commands,
CommandVisibility visibility
);
Parameters
commands
DevExpress.XtraPrinting.PrintingSystemCommand
指定可在列印系統的預覽檔案執行的命令。(詳細說明請點選連結參見協助文檔)
visibility
CommandVisibility.
指定用於列印系統命令的能見度標準。(詳細說明請點選連結參見協助文檔)
All
這兩個命令的工具列項目和功能表項目是可見的。
Menu
已淘汰;使用CommandVisibility全部代替。這兩個命令的工具列項目和功能表項目是可見的。
None
這兩個命令的工具列按鈕和功能表項目是看不見的。
Toolbar
已淘汰;使用CommandVisibility全部代替。這兩個命令的工具列項目和功能表項目是可見的。
使用Developer Express報表控制項
使用Developer Express報表控制項:
建立一個報表的時候,在添加新項中選擇XtraReport V3 Class選項,名稱自己命名,
點確定就會跳出它的設計介面。
它會有三個地區:PageHeader[one band per page],Detail,PageFooter[one band per page]這三個地區。
首先要添加一個ReportHeader[one band per report],可以在它的空白地區,右擊滑鼠-->Insert Band-->
ReportHeader即可。不需要PageHeader[one band per page]的話,可以把它刪掉。
兩者的區別主要是PageHeader[one band per page]列印出來的每個頁都會顯示PageHeader[one band per page]
所設計的內容。而ReportHeader[one band per report]列印出來的只有在首頁才會顯示。其它的頁就不會了。
接著就是主要介面設計的問題,可以在它的空白地區,右擊滑鼠-->Insert Detail Report-->Unbound即可。
它就會跳出一個DetailReport,它下面還有一個Detail1,主要是用來顯示主要內容用的。接著再添加一個用來
顯示一個主要內容的列標題,就相當於標誌以便更容易查看。可以右擊滑鼠-->Insert Band-->GroupHeader即可。
就會有一個GroupHeader1顯示出來,它是在Detail1上面的,或者還要顯示一些主要內容顯示完之後的一些資料,
又要右擊滑鼠-->Insert Band-->GroupFooter即可。
如果又要讓它同時顯示另外一個,可以選中Detail,然後右擊滑鼠-->Insert Detail Report-->Unbound它就會
跳出另外一個DetailReport1,它下面還有一個Detail2,添加其它的同上。
要讓以下的有資料的話,就要事先對它的資料進行綁定
DetailReport.DataAdapter = Adp '資料配接器
DetailReport.DataSource = dst '資料集
DetailReport.DataMember = "a" '表
如果想讓所尋找出來的資料,讓它有順序排列的話,就要使用它裡面的事件了!
如Cell7儲存格是在表格裡面,但其它表格的儲存格綁定在所尋找的資料中,資料有5條的話,Cell儲存格它就不會自己顯示1,2,3,4,5這樣排序了
。就要使用它本身儲存格的事件。
Private Sub Cell7_BeforePrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles
Cell7.BeforePrint
Dim lab As XRLabel = sender
lab.Text = s 's這個變數要定義一個全域變數,初始值設為1
s += 1
End Sub
還有一種情況,可能要對錶格每一行資料中的某列進行求和或求個數。
'求個數
Dim XrSummary2 As DevExpress.XtraReports.UI.XRSummary = New DevExpress.XtraReports.UI.XRSummary
Cell32.DataBindings.Add("Text", dst, "a.id")
XrSummary2.FormatString = "{0}"
XrSummary2.Func = SummaryFunc.Count
XrSummary2.Running = DevExpress.XtraReports.UI.SummaryRunning.Group
Me.Cell32.Summary = XrSummary2 '就可以顯示所要的個數
'求和
Dim XrSummary1 As DevExpress.XtraReports.UI.XRSummary = New DevExpress.XtraReports.UI.XRSummary
Me.Cell33.DataBindings.AddRange(New DevExpress.XtraReports.UI.XRBinding() {New DevExpress.XtraReports.UI.XRBinding("Text", dst, "a.startmoney", "{0}")})
XrSummary1.FormatString = "{0}"
XrSummary1.Func = SummaryFunc.Sum
XrSummary1.Running = DevExpress.XtraReports.UI.SummaryRunning.Group
Me.Cell33.Summary = XrSummary1
'儲存格的綁定
XrTableCell30.DataBindings.Add("Text", dst, "Vouchers.Name")
Cell17.DataBindings.AddRange(New DevExpress.XtraReports.UI.XRBinding() {New DevExpress.XtraReports.UI.XRBinding("Text", dst1, "a.Depositdate", "{0:yyyy/MM/dd}")}) '日期格式的綁定
'如果要把兩個表格中某一列的值相符累加起來
'定義兩個變數interest1,interest2為Double型
'第一個表格的某個列
Private Sub Cell25_BeforePrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles Cell25.BeforePrint
Dim lab As XRLabel = sender
Dim value As Double
value = Convert.ToDouble(lab.Text)
interest1 += value '就會求出這一列中所有資料的總和
End Sub
'第二個表格的某個列
Private Sub Cell23_BeforePrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles Cell23.BeforePrint
Dim lab As XRLabel = sender
Dim value As Double
value = Convert.ToDouble(lab.Text)
interest2 += value
End Sub
'這樣就會把這兩列的值添加到儲存格Cell19中
Private Sub Cell19_BeforePrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles Cell19.BeforePrint
Me.Cell19.Text = interest1 + interest2
End Sub
在Web中預覽列印
在Web程式中使用起來可能有點麻煩,但相對來說還是比較容易的。
1 在頁面中分別添加ReportToolbar和ReportViewer。
ReportToolbar提供一組工具命令,用來控制項ReportViewer視圖執行哪些操作,ReportToolbar最重要的屬性就是ReportViewer屬性,給其指定一個報表視圖。如:
ReportViewer用來展現那Report報表,可以通過ReportViewer的Report屬性指定(通過列表選擇即可),如:
設定完成後,通過瀏覽器開啟頁面並預覽報表。