報告生成器FastReport.Net 教程:如何調(diào)用??PreviewControl.OnPrint和PreviewControl.OnExport事件
報表生成器FastReport .NET是適用于.NET Core 3,ASP.NET,MVC和Windows窗體的全功能報告庫。使用FastReport .NET,您可以創(chuàng)建獨立于應(yīng)用程序的.NET報告。
近日,F(xiàn)astReport .Net升級到v2020.4版,在此版本中,添加了新的條形碼:ITF-14和Deutsce Post Identcode,同時優(yōu)化了多種性能(點擊下方按鈕下載),感興趣的朋友可點擊下方按鈕下載最新版。
Fastreport在線下單立享85折起!趕緊加入購物清單吧!
在FastReport 2019.4中添加了訂閱PreviewControl.OnPrint和PreviewControl.OnExport事件的功能,這些事件在按下相應(yīng)按鈕時直接調(diào)用。
查看報告時,將使用工具欄調(diào)用查看器,該工具欄包含諸如打印按鈕和帶有報告導(dǎo)出功能的下拉列表之類的元素。選擇列表中的任何項目將觸發(fā)OnExport事件,然后按“打印”按鈕將觸發(fā)OnPrint。讓我們舉個例子,看看如何在實踐中使用這些事件。
您可以對這些事件使用標準處理程序,這些處理程序是為PreviewControl的可視組件創(chuàng)建的:
但是,如果在應(yīng)用程序代碼中添加PreviewControl組件,則必須為事件簽名自己的處理程序。例如,您的處理程序可能會向您發(fā)送導(dǎo)出或打印事件警報。例如,這可能是數(shù)據(jù)庫中的記錄。讓我們考慮這個例子:
private void Button1_Click(object sender, EventArgs e)
{
//create report
Report report = new Report();
//Load report
report.Load("App_Data/Master-Detail.frx");
//create data source
DataSet data = new DataSet();
//load data
data.ReadXml("C:\\Program Files (x86)\\FastReports\\FastReport.Net\\Demos\\Reports\\nwind.xml");
//register data
report.RegisterData(data);
//create preview object
var prev = new PreviewControl();
//add preview into the form
this.Controls.Add(prev);
prev.Dock = DockStyle.Fill;
prev.BringToFront();
//subscribe to the event
prev.OnExport+= new System.EventHandler<PreviewControl.ExportEventArgs>(ExportAction);
//assign preview control to the report
report.Preview = prev;
//Show the report
report.Show();
}
創(chuàng)建報告對象并在其中注冊數(shù)據(jù)后,我們創(chuàng)建一個PreviewControl,訂閱事件處理程序OnExport事件,我們將在下面實現(xiàn)該事件。然后,將PreviewControl對象分配給預(yù)覽報告?,F(xiàn)在,我們?yōu)镺nExport事件實現(xiàn)一個自定義事件處理程序:
public void ExportAction(object sender, PreviewControl.ExportEventArgs e)
{
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True");
SqlCommand command = new SqlCommand("insert into dbo.Status (ReportName, ExportType, ExportDate) Vales ('" + Path.GetFileNameWithoutExtension(e.Report.FileName) + "', '"+ e.Export.BaseName +"', '" + DateTime.Now + "')");
command.Connection = conn;
conn.Open();
command.ExecuteNonQuery();
conn.Close();
}
在這種方法中,我們將有關(guān)導(dǎo)出事件的信息記錄在數(shù)據(jù)庫中,包括報告名稱,導(dǎo)出類型和交易日期。這只是如何使用此事件的一個可能示例。例如,您可以實施發(fā)送有關(guān)此事件的電子郵件,或?qū)?dǎo)出文件保存到特定文件夾。
OnPrint事件的處理方式相同。
當(dāng)查看時,這兩個事件是報表上最頻繁的操作,因此許多人希望自動化其對事件的自定義操作?,F(xiàn)在可以輕松地從事件參數(shù)中獲取有關(guān)報告,導(dǎo)出或打印設(shè)置的信息,并將其處置以創(chuàng)建自己的附加操作。