報(bào)告事件
FastReport .Net是一款全功能的Windows Forms、ASP.NET和MVC報(bào)表分析解決方案,使用FastReport .NET可以創(chuàng)建獨(dú)立于應(yīng)用程序的.NET報(bào)表,同時(shí)FastReport .Net支持中文、英語(yǔ)等14種語(yǔ)言,可以讓你的產(chǎn)品保證真正的國(guó)際性。
為了最大限度地靈活控制報(bào)表,每個(gè)報(bào)表對(duì)象都有多個(gè)事件。例如,在與 "Data"帶連接的處理程序中,可以過(guò)濾記錄,即根據(jù)特定條件隱藏或顯示帶。
讓我們考慮一下在報(bào)表生成過(guò)程中觸發(fā)的事件。以一個(gè)簡(jiǎn)單的報(bào)表為例,該報(bào)表包含一個(gè)頁(yè)面、一個(gè) "Data "條帶和條帶上的兩個(gè) "Text "對(duì)象:
在報(bào)告開始時(shí),"Report "對(duì)象會(huì)觸發(fā) StartReport 事件。在報(bào)告頁(yè)面形成之前,StartPage 事件會(huì)被觸發(fā)。每個(gè)模板頁(yè)面(不要與準(zhǔn)備好的報(bào)告頁(yè)面混淆?。┒紩?huì)觸發(fā)一次該事件。在我們的例子中,無(wú)論準(zhǔn)備好的報(bào)告有多少頁(yè),事件都會(huì)被觸發(fā)一次,因?yàn)槟0鍒?bào)告只有一頁(yè)。
然后,開始打印 "Data" 帶行。具體過(guò)程如下:
- 觸發(fā) BeforePrint 帶事件;
- 打印帶中所有對(duì)象的 BeforePrint 事件被觸發(fā);
- 所有對(duì)象都填入數(shù)據(jù);
- 所有位于帶狀布局上的對(duì)象的 AfterData 事件被觸發(fā);
- 觸發(fā) BeforeLayout 頻帶事件;
- 將對(duì)象放置在帶狀區(qū)域上,計(jì)算帶狀區(qū)域的高度并拉伸帶狀區(qū)域(如果可以的話);
- 觸發(fā) AfterLayout band 事件;
- 如果帶狀物件無(wú)法放置在頁(yè)面的空閑位置,則會(huì)形成一個(gè)新頁(yè)面;
- 在準(zhǔn)備好的報(bào)告頁(yè)面上顯示條帶及其所有對(duì)象;
- 觸發(fā) AfterPrint 頻帶事件;
- 觸發(fā)所有條帶對(duì)象的 AfterPrint 事件。
- 只要數(shù)據(jù)源中有數(shù)據(jù),就會(huì)打印數(shù)據(jù)帶行。之后,在我們的例子中,報(bào)告的形成就結(jié)束了。一個(gè)頁(yè)面的 FinishPage 事件被觸發(fā),最后--"報(bào)表 "對(duì)象的 FinishReport 事件被觸發(fā)。
因此,通過(guò)使用不同對(duì)象的事件,可以控制報(bào)告形成的每一步。正確使用事件的關(guān)鍵在于充分理解上述 11 個(gè)步驟中闡述的波段打印過(guò)程。
因此,只需使用 "BeforePrint "帶,就可以完成很多操作--對(duì)對(duì)象所做的任何更改都會(huì)顯示出來(lái)。但在這種情況下,無(wú)法分析如果條帶拉伸,將在哪一頁(yè)打印,因?yàn)闂l帶的高度將在第 6 步計(jì)算。
這可以借助第 7 步的 AfterLayout 事件或第 10 步的 AfterPrint 來(lái)完成,但在后一種情況下,條帶已經(jīng)打印,對(duì)對(duì)象的操作不會(huì)產(chǎn)生任何結(jié)果。
總之,您必須明確說(shuō)明每個(gè)事件在哪個(gè)時(shí)刻觸發(fā),并使用與給定任務(wù)相對(duì)應(yīng)的事件。