報(bào)表生成器FastReport .Net程序員手冊(cè):如何替換
FastReport .Net是適用于Windows Forms,ASP.NET,MVC和.NET Core的全功能報(bào)表解決方案。它可以在Microsoft Visual Studio 2005-2019中使用。支持.Net Framework 2.0-4.x,.NET Core 3.0及以上版本。
在FastReport .NET 2021.1的新版本中,我們實(shí)現(xiàn)了對(duì).NET 5的支持。添加了新條形碼-Deutsce Post Leitcode。將RTF轉(zhuǎn)換為報(bào)告對(duì)象的算法已得到顯著改進(jìn)。并且還添加了用于轉(zhuǎn)換數(shù)字的新功能。歡迎下載體驗(yàn)。(點(diǎn)擊下方按鈕下載)
立即點(diǎn)擊下載FastReport.NET v2021.1最新版
Fastreport.NET在線購(gòu)買價(jià)更低,專享85折起!趕緊加入購(gòu)物清單吧!
替換 "打開 "和 "保存 "對(duì)話框
如果您決定將報(bào)表存儲(chǔ)在數(shù)據(jù)庫(kù)中,您可能需要改變?cè)O(shè)計(jì)器,使其能夠從/向數(shù)據(jù)庫(kù)打開和保存報(bào)表。也就是說(shuō),你需要用你自己的對(duì)話框來(lái)代替標(biāo)準(zhǔn)的 "打開 "和 "保存 "對(duì)話框。要做到這一點(diǎn),請(qǐng)使用EnvironmentSettings組件(見上一節(jié))。該組件有以下事件。
CustomOpenDialog
發(fā)生在報(bào)表設(shè)計(jì)器即將顯示 "打開 "對(duì)話框時(shí)。在事件處理程序中,您必須顯示一個(gè)對(duì)話框窗口以允許用戶選擇一個(gè)報(bào)表文件。如果對(duì)話框成功執(zhí)行,必須返回e.Cancel = false,并將e.FileName設(shè)置為所選文件名。
下面的例子演示了如何使用這個(gè)事件。
private void CustomOpenDialog_Handler( Object sender, OpenSaveDialogEventArgs e) { using (OpenFileDialog dialog = new OpenFileDialog()) { dialog.Filter = "Report files (*.frx)|*.frx"。 // 如果對(duì)話框中的 "報(bào)告文件",則將e.Cancel設(shè)置為false // 已成功執(zhí)行 e.Cancel = dialog.ShowDialog() != DialogResult.OK。 //將e.FileName設(shè)置為選定的文件名。 e.FileName = dialog.FileName。 } }自定義保存對(duì)話框
發(fā)生在報(bào)表設(shè)計(jì)器即將顯示 "保存 "對(duì)話框時(shí)。在事件處理程序中,您必須顯示一個(gè)對(duì)話框窗口以允許用戶選擇一個(gè)報(bào)表文件。如果對(duì)話框成功執(zhí)行,必須返回e.Cancel = false,并將e.FileName設(shè)置為所選文件名。
下面的例子演示了如何使用這個(gè)事件。
private void CustomSaveDialog_Handler( Object sender, OpenSaveDialogEventArgs e) { using (SaveFileDialog dialog = new SaveFileDialog()) { dialog.Filter = "Report files (*.frx)|*.frx"; //從e.FileName中獲取默認(rèn)文件名。 dialog.FileName = e.FileName; // 如果 dialog.FileName = e.FileName; // 如果 dialog.FileName = e.Cancel,則設(shè)置 e.Cancel 為 false e.Cancel = dialog.ShowDialog() != DialogResult.OK; //將e.FileName設(shè)置為選定的文件名。 e.FileName = dialog.FileName; } }自定義打開報(bào)告
發(fā)生在報(bào)表設(shè)計(jì)器即將加載報(bào)表時(shí)。在事件處理程序中,您必須從 e.FileName 屬性中指定的位置加載 e.Report 屬性中指定的報(bào)表。后一個(gè)屬性包含 CustomOpenDialog 事件處理程序返回的名稱。它可能是文件名、數(shù)據(jù)庫(kù)鍵值等。
下面的示例演示了如何使用該事件:
private void CustomOpenReport_Handler( Object sender, OpenSaveReportEventArgs e) { //從給定的e.FileName中加載報(bào)告。 e.Report.Load(e.FileName); }自定義保存報(bào)告
發(fā)生在報(bào)表設(shè)計(jì)器準(zhǔn)備保存報(bào)表時(shí)。在事件處理程序中,您必須將 e.Report 屬性中指定的報(bào)告保存到 e.FileName 屬性中指定的位置。后一個(gè)屬性包含 CustomSaveDialog 事件處理程序返回的名稱。它可能是文件名、數(shù)據(jù)庫(kù)鍵值等。
下面的示例演示了如何使用該事件。
private void CustomSaveReport_Handler( Object sender, OpenSaveReportEventArgs e) { // 將報(bào)告保存到給定的e.FileName中。 e.Report.Save(e.FileName); }替換標(biāo)準(zhǔn)進(jìn)度窗口
在進(jìn)行以下操作時(shí),會(huì)顯示進(jìn)度窗口。
- 運(yùn)行報(bào)告
- 印刷
- 輸出
StartProgress
在操作前發(fā)生一次。在這種情況下,你必須創(chuàng)建自己的進(jìn)度窗口并顯示它。
進(jìn)度
每次處理當(dāng)前報(bào)表頁(yè)時(shí)發(fā)生。在這種情況下,您必須在窗口中顯示進(jìn)度狀態(tài)。
FinishProgress
操作后發(fā)生一次。在這個(gè)事件中,你必須銷毀進(jìn)度窗口。
Progress事件的參數(shù)為ProgressEventArgs類型。它有以下幾個(gè)參數(shù)屬性。
string Message | 消息文本
int Progress | 當(dāng)前處理的報(bào)告頁(yè)的索引。
int Total | 報(bào)告的總頁(yè)數(shù)。當(dāng)準(zhǔn)備一個(gè)報(bào)告時(shí),這個(gè)參數(shù)可能為0,因?yàn)榭傢?yè)數(shù)是未知的。
在大多數(shù)情況下,您需要在 Progress 事件處理程序中顯示來(lái)自 e.Message 屬性的文本。如果你想顯示一個(gè)進(jìn)度條,其他參數(shù)可能會(huì)很有用。
傳遞自己的連接字符串
如果您使用在報(bào)表中定義的數(shù)據(jù)源,您可能需要向報(bào)表傳遞應(yīng)用程序定義的連接字符串。這可以通過(guò)三種方法來(lái)完成。
第一種方法:你直接將連接字符串傳遞給報(bào)表中的Connection對(duì)象。
執(zhí)行以下操作。
report1.Load(...);
//在加載報(bào)表之后,運(yùn)行報(bào)表之前進(jìn)行操作
//假設(shè)我們?cè)趫?bào)告中只有一個(gè)連接
report1.Dictionary.Connections[0].ConnectionString = my_connection_string;
report1.Show();
第二種方法:你用報(bào)告參數(shù)傳遞一個(gè)連接字符串。執(zhí)行以下操作。
- 運(yùn)行報(bào)表設(shè)計(jì)器
- 在 "數(shù)據(jù) "窗口中,創(chuàng)建一個(gè)新的報(bào)表參數(shù)(例如,名稱為 "MyParameter")。更多細(xì)節(jié)請(qǐng)參見《用戶手冊(cè)》。
- 在 "數(shù)據(jù) "窗口中,選擇包含數(shù)據(jù)源的 "連接 "對(duì)象。
- 切換到 "屬性 "窗口,將ConnectionStringExpression屬性設(shè)置為以下內(nèi)容。
[M yParam eter]
- 將連接字符串傳遞給MyParameter參數(shù)。
report1.SetParameterValue("MyParameter", my_connection_string);
第三種方法:使用EnvironmentSettings組件的DatabaseLogin事件(參見 "配置FastReport.Net環(huán)境 "部分)。該事件在每次FastReport打開連接時(shí)發(fā)生。下面是這個(gè)事件處理程序的一個(gè)例子。
private void environmentSettings1_DatabaseLogin( Object sender, DatabaseLoginEventArgs e) { e.ConnectionString = my_connection_string; }請(qǐng)記住,DatabaseLogin事件是全局的,它適用于所有報(bào)表。
傳遞自定義SQL
報(bào)表可能包含使用數(shù)據(jù)向?qū)砑拥臄?shù)據(jù)源(通過(guò) "數(shù)據(jù)|添加數(shù)據(jù)源... "菜單)。有時(shí)需要從您的應(yīng)用程序向該數(shù)據(jù)源傳遞自定義SQL。要做到這一點(diǎn),請(qǐng)使用以下代碼。
using FastReport.Data.Report1.Load(...) report1.Load(...); //在加載報(bào)表之后,運(yùn)行報(bào)表之前進(jìn)行操作 // 通過(guò)表的別名找到表 TableDataSource table = report1.GetDataSource("MyTable") as TableDataSource.SelectCommand = "new SQL text"; table.SelectCommand = "new SQL text"; report1.Show();對(duì)報(bào)表對(duì)象的引用
當(dāng)您將報(bào)表作為一個(gè)類來(lái)使用時(shí)(請(qǐng)參閱 "存儲(chǔ)報(bào)表和加載報(bào)表 "部分),您可以直接引用報(bào)表對(duì)象。下面的例子演示了如何改變報(bào)表中包含的 "Text1 "對(duì)象的字體。
SimpleListReport report = new SimpleListReport();
report.Text1.Font = new Font("Arial", 12);
在其他情況下,如果需要獲取一個(gè)對(duì)象的引用,必須使用Report對(duì)象的FindObject方法。
TextObject text1 = report1.FindObject("Text1") as TextObject;
text1.Font = new Font("Arial", 12);
要引用報(bào)表中定義的數(shù)據(jù)源,使用Report對(duì)象的GetDataSource方法。該方法將數(shù)據(jù)源的別名作為參數(shù)。
DataSourceBase ds = report1.GetDataSource("Products");
還想要更多嗎?您可以點(diǎn)擊閱讀【FastReport 報(bào)表2020最新資源盤點(diǎn)】,查找需要的教程資源。讓人興奮的是FastReport .NET報(bào)表正在慧都網(wǎng)火熱銷售中!低至3701元起!>>查看價(jià)格詳情