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

QQ交谈
在线咨询

渝公网安备
50010702500608号

客服热线