在各種管理系統中,報表是必不可少的。報表是數據最直觀體現的方式之一
以前,屌絲我是微軟的忠實粉絲,所以報表工具就是微軟自帶的RDLC。。。
不可否認的是RDLC的功能是非常強大的。能夠滿足絕大多數的要求。
但是程序猿的天性就是愛折騰,愛摸索,喜歡玩點新東西,所以我就想邊學邊寫一個XtraReport 系列。當然也是因為看到我們偉大的Dx論壇沒有人寫,自己就當一次敢於吃螃蟹的人。哈哈。
所以,就從今天開始咯,有空就寫寫,每次都會附上Demo。菜鳥寫的,有不對的希望指正。
注:XtraReports 系列是根據XtraReport幫助文檔示例來寫的,因為我覺得幫助文檔都是按照向導方式去配置數據源,這與我們實際不是很相符,我們一般都是以代碼方式去獲取數據源,所以我就利用代碼的形式去重新構造一邊Xtrareport示例。
開始咯。。。
接下來我來完成幫助文檔中最簡單的一個示例。一步一個腳印,從入門到入門++
什么叫靜態報表,個人的理解是:靜態報表顯示的數據是從一個文本文檔或者Word文檔中獲取出來的。
先來看看效果:
第一步,新建一個Windows窗體,然后拉一個SplitContainerControl 控件,Dock屬性設置為Full ,Horizontal屬性設置為False
第二步,拉一個GroupControl控件,設置Text為查詢區域,並拖一個SimpleButton控件,設置Text屬性為顯示靜態報表
第三步,拖拉一個DocumentViewer控件,Dock屬性設置為Full
第四步,窗體布局完成了,我們接下來就新建一個報表
如圖:
在新建的報表中選中報表空白區域右鍵單擊,然后插入報表頭
(此圖報表頭為灰色是因為我已經添加好了,一個報表只能擁有一個報表頭)
在報表頭中拉入一個XRLabel,設置Text為靜態報表。
第五步,在報表Detail區域拖入一個XRRichText控件用來承載獲取的靜態文本數據。
第六步,窗體跟報表都建立好了之后,我們就來處理事件了。
有時候我們可能需要重復打印我們獲取出來的靜態數據。怎么讓它重復20次呢?我們可以設置報表屬性如下:
this.ReportPrintOptions.DetailCountOnEmptyDataSource = 20; (適用於13.1.5)
在幫助文檔10.2版本中的方式是:選中報表,並在 屬性 窗口把它的 XtraReportBase.DetailPrintCount 屬性設置為 20。
第七步,如果想把數據分開打印在各自的頁面上,則把 Detail 帶區的 Band.PageBreak 屬性設置為 AfterBand。(通用)
或者利用代碼方式:this.Detail.PageBreak = DevExpress.XtraReports.UI.PageBreak.AfterBand;
第八步,為報表獲取數據源:this.xrRichText1.LoadFile(System.Environment.CurrentDirectory + "\\Rpt.docx"); //在程序運行的根目錄下有一個Rpt.doxc的文檔
最后一步,點擊按鈕,讓報表顯示在DocumentViewer上
private void btnShowReport_Click(object sender, EventArgs e)
{
StaticRpt Rpt=new StaticRpt();
this.documentViewer1.DocumentSource = Rpt;
Rpt.CreateDocument();//注:如果利用documentViewer1 的時候,就沒有了ShowPreview事件了。http://www.devexpress.com/Support/Center/Question/Details/Q508388
}
哈哈。就這樣了,大功告成。。
最后為屌絲送福利。。嘿嘿。。
總結:寫這個東西不容易啊。。。。花了好長時間,要自己先做一遍,然后寫一遍。萬事開頭難,慢慢來吧。從最簡單的開始。。慢慢深入。。。
Demo地址:http://yunpan.cn/QXkUjaumGttqG 訪問密碼 f8cf