如何在报表预览中制作自定义工具栏

大多数报表生成器都有一个带有工具栏的报表查看模式,您可以从中对报表进行各种操作。例如,翻页、打印、导出等。但是,有时没有足够的按钮具有您想要的功能。这可以是快速导出为某种格式,也可以是将报表发送给审阅,或者您可能想批量发送报表。无论哪种方式,标准工具栏FastReport.Net都不允许您添加自定义功能。但是开发人员提供了创建自己的预览模式的可能性。很棒,并不是每个人都喜欢标准的预览版。许多人希望删除一些不必要的按钮,但会添加自己的“features”功能。因此,让我们看一下如何快速轻松地制作报表预览。

大多数报表生成器都有一个带有工具栏的报表查看模式,您可以从中对报表进行各种操作。例如,翻页、打印、导出等。但是,有时没有足够的按钮具有您想要的功能。这可以是快速导出为某种格式,也可以是将报表发送给审阅,或者您可能想批量发送报表。无论哪种方式,标准工具栏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();

在这里,我们覆盖了报表的视图组件。说实话,我们必须公开PreviewControl1。

就这样。希望您能利用这个巨大的机会来制作自定义查看器报表。

 

 

产品介绍 | 下载试用 | 优惠活动 | 在线客服

标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年1月16日
下一篇 2020年1月16日

相关推荐

发表回复

登录后才能评论