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