翻譯|使用教程|編輯:楊鵬連|2021-02-22 09:55:58.787|閱讀 262 次
概述:在本章中,我們將學(xué)習(xí)FastReport中使用報(bào)表的原則。我們還將仔細(xì)介紹配置FastReport.Net對(duì)話框。
# 界面/圖表報(bào)表/文檔/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的新版本中,我們實(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)物清單吧!
替換 "打開(kāi) "和 "保存 "對(duì)話框
如果您決定將報(bào)表存儲(chǔ)在數(shù)據(jù)庫(kù)中,您可能需要改變?cè)O(shè)計(jì)器,使其能夠從/向數(shù)據(jù)庫(kù)打開(kāi)和保存報(bào)表。也就是說(shuō),你需要用你自己的對(duì)話框來(lái)代替標(biāo)準(zhǔn)的 "打開(kāi) "和 "保存 "對(duì)話框。要做到這一點(diǎn),請(qǐng)使用EnvironmentSettings組件(見(jiàn)上一節(jié))。該組件有以下事件。
CustomOpenDialog
	發(fā)生在報(bào)表設(shè)計(jì)器即將顯示 "打開(kāi) "對(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;
}
}
自定義打開(kāi)報(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)度窗口。
	
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í)行以下操作。
	
[M yParam eter]
report1.SetParameterValue("MyParameter", my_connection_string);
	第三種方法:使用EnvironmentSettings組件的DatabaseLogin事件(參見(jiàn) "配置FastReport.Net環(huán)境 "部分)。該事件在每次FastReport打開(kāi)連接時(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正在慧都網(wǎng)火熱銷售中!低至3701元起!>>查看價(jià)格詳情
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自: