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

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

在这里,我们覆盖了报表的视图组件。

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

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页