如何在報表預覽中製作自定義工具欄

大多數報表生成器都有一個帶有工具欄的報表查看模式,您可以從中對報表進行各種操作。例如,翻頁、打印、導出等。但是,有時沒有足夠的按鈕具有您想要的功能。這可以是快速導出爲某種格式,也可以是將報表發送給審閱,或者您可能想批量發送報表。無論哪種方式,標準工具欄FastReport.Net都不允許您添加自定義功能。但是開發人員提供了創建自己的預覽模式的可能性。很棒,並不是每個人都喜歡標準的預覽版。許多人希望刪除一些不必要的按鈕,但會添加自己的“features”功能。因此,讓我們看一下如何快速輕鬆地製作報表預覽。在FastReport.dll庫中,我們可以使用標準預覽模式下的所有功能。

讓我們看一下這個例子。典型的Windows窗體應用程序。我們正在將FastReport.dll庫連接到它。在表單上,我們添加了工具欄組件ToolStrip和PreviewControl——一個標準的報表查看器。該組件已經擁有自己的工具欄,但是很容易隱藏在工具欄屬性中。

在工具欄上,我們創建了具有必要功能的按鈕:

如何在報表預覽中製作自定義工具欄

打開報表、打印、導出、翻頁和具有其功能的特殊按鈕。它將以csv格式將報表保存在指定的文件夾中。這樣的QuickSave。假設我們經常使用此特定功能,因此我們將其移至單獨的按鈕。現在讓我們看一下應用程序代碼:

public partial class Form1 : Form
 {
 private Report FReport;
 private DataSet FDataSet;
 
 public Form1()
 {
 InitializeComponent();
 }
 
 private void LoadBtn_Click(object sender, EventArgs e)
 {
 FReport = new Report();
 FReport.Preview = previewControl1;
 
 using (OpenFileDialog file = new OpenFileDialog()) 
 {
 if (file.ShowDialog() == DialogResult.OK)
 {
 FDataSet = new DataSet();
 FDataSet.ReadXml("K:/My documents/nwind.xml");
 FReport.Load(file.FileName);
 FReport.RegisterData(FDataSet, "NorthWind");
 FReport.Prepare();
 FReport.ShowPrepared();
 }
 }
 }

下載報表按鈕將打開一個標準的“File Open”文件打開對話框窗口。然後,我們將數據庫上傳到數據源,在報表對象中上傳選定的報表模板,將其註冊爲數據源,以在組件預覽中收集並顯示報表。

private void SaveBtn_Click(object sender, EventArgs e)
 {
 SaveBtn.DropDownItems.Clear();
 Listlist = new List();
 RegisteredObjects.Objects.EnumItems(list);
 
 ToolStripMenuItem saveNative = new ToolStripMenuItem("Save to .fpx file...");
 saveNative.Click += new EventHandler(item_Click);
 SaveBtn.DropDownItems.Add(saveNative);
 
 foreach (ObjectInfo info in list)
 {
 if (info.Object != null && info.Object.IsSubclassOf(typeof(ExportBase)))
 {
 ToolStripMenuItem item = new ToolStripMenuItem(Res.TryGet(info.Text) + "...");
 item.Tag = info;
 item.Click += new EventHandler(item_Click);
 if (info.ImageIndex != -1)
 item.Image = Res.GetImage(info.ImageIndex);
 SaveBtn.DropDownItems.Add(item);
 }
 }
 }

導出/保存按鈕實際上有一個帶有各種導出格式的下拉列表。首先,我清除下拉列表,並創建要導出的對象列表。加載所有已註冊對象的列表。

然後,我將第一個元素添加到導出列表中——導出本機格式,即fpx格式。所有其他可用格式將循環添加到列表中。一些導出有圖片。列表中的每個元素都分配給處理按下項目的item_Click事件。

private void item_Click(object sender, EventArgs e)
 {
 ObjectInfo info = (sender as ToolStripMenuItem).Tag as ObjectInfo;
 if (info == null)
 {
 previewControl1.Save();
 }
 else
 {
 ExportBase export = Activator.CreateInstance(info.Object) as ExportBase;
 export.CurPage = previewControl1.PageNo;
 export.Export(previewControl1.Report);
 }
 }

事件處理程序item_Click正在導出報表,該報表當前顯示在“Preview”預覽組件中。

private void PrintBtn_Click(object sender, EventArgs e)
 {
 previewControl1.Print();
 }

“Print”打印按鈕將打開“ PrintDoc”對話框窗口。

private void FirstBtn_Click(object sender, EventArgs e)
 {
 previewControl1.First();
 }

“First”按鈕顯示報表的第一頁。

private void PrevBtn_Click(object sender, EventArgs e)
 {
 previewControl1.Prior();
 }

“Prev”按鈕顯示報表的上一頁。

private void NextBtn_Click(object sender, EventArgs e)
 {
 previewControl1.Next();
 }

“Next”按鈕顯示報表的下一頁。

private void LastBtn_Click(object sender, EventArgs e)
 {
 previewControl1.Last();
 }

最後,“Last”按鈕顯示報表的最後一頁。

private void PageNo_KeyDown(object sender, KeyEventArgs e)
 {
 if (e.KeyData == Keys.Enter)
 {
 previewControl1.PageNo = int.Parse(PageNo.Text);
 }
 }

按鈕之間的文本字段顯示當前頁面的編號。更改此值可以在報表頁面之間切換。

private void PreviewControl1_PageChanged(object sender, EventArgs e)
 {
 PageNo.Text = previewControl1.PageNo.ToString();
 }

但是,如果使用按鈕在頁面之間切換,則文本字段中的頁面編號也會更改。根據預覽組件中的頁面更改事件。

private void QuickSaveCSVBtn_Click(object sender, EventArgs e)
 {
 FastReport.Export.Csv.CSVExport ex = new FastReport.Export.Csv.CSVExport();
 FReport.Export(ex, "Text.csv");
 }

最後,我們的自定義按鈕。它的功能無處不在,僅用於演示。它以csv格式保存報表。因此,您可以爲自己或客戶創建方便的報表查看器,併爲其提供必要的功能。

預覽版中附加功能的夢想可能是無限的,開發人員爲我們提供了這一機會。

而且,如果您希望在顯示來自應用程序代碼的報表時使用預覽組件,我們將使用以下代碼:

CusomPreviewForm prev = new CusomPreviewForm ();
Report report = new Report();
report.Load("K:/My documents/lines.frx");
report.Preview = prev.previewControl1;
report.Show();
prev.ShowDialog();

在這裏,我們覆蓋了報表的視圖組件。

就這樣。希望您能利用這個特別好的機會來製作自定義查看器報表。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章