如何在FastReport.NET中自定义就绪报表查看器(Viewer)

**报表控件**FastReport.NET 中用于查看报表的主要组件是 Viewer。

该查看器内置了较为完整的功能集合,可用于报表的查看、导出、打印、保存,以及执行其他相关操作。

FastReport .NET最新官方正版试用下载

这些功能在很多场景下都非常有用,但在实际项目中,并不一定每一位用户都需要完整功能。例如,对于只负责查看和打印报表的用户来说,导出报表、通过电子邮件发送等功能往往并没有实际价值。过多的导出选项反而会让界面显得复杂,用户在查找所需功能时也更容易产生困扰。

在这种情况下,更合理的做法是:只为用户保留真正需要的功能。

类似的问题也同样出现在 Combit 列表和标签报表生成器等产品中,这并非 FastReport.NET 独有的现象。

FastReport .NET最新官方正版试用下载

在报表设计器中自定义导出列表

如你所知,FastReport.NET 的报表设计器本身也支持报表预览功能,并且使用的正是同一套 Viewer。

在设计器中,可以直接对可用的导出列表进行配置。

操作路径为:

"文件" → "选项" → "用户界面"

在该界面中,点击"导出菜单"按钮,即可打开导出显示设置窗口。

在这里,你可以分别控制单个导出项或整个导出组的显示状态。如果需要快速恢复到初始状态,也可以使用"默认菜单"按钮一键还原原始设置。

例如,在某些场景下,我们可以从导出列表中移除 PDF、Office 或 XML 格式。完成设置后,在报表预览界面中,这些导出选项将不再显示。

设计器中的限制:只能控制导出列表

需要注意的是,在报表设计器中,只能对导出列表进行配置。

如果希望对 Viewer 中的其他控件(如工具栏按钮)进行更精细的控制,就需要在运行时通过代码来实现。这也是大多数实际项目中更常用的方式。

复制代码
Report report = new Report ( ) ; report.Load ( 
" App_Data / Master - Detail.frx " ) ; report.Prepare ( ) ; FastReport.Utils.Config.PreviewSettings.Buttons 
= PreviewButtons.Print | PreviewButtons.Design ; report.ShowPrepared ( ) ;  

通过代码自定义 Viewer 的按钮显示

在创建用于运行报表的应用程序时,可以在代码中设置 Viewer 的菜单和按钮显示规则。例如,可以通过 PreviewSettings 指定当前 Viewer 仅显示"打印"和"设计"按钮。

这样设置后,最终呈现给用户的 Viewer 界面会非常简洁,只保留必要操作。

需要注意的是,Viewer 中用于显示页码的输入框会同时出现。该输入框无法单独移除,否则在没有页面导航按钮的情况下,将无法在多页报表中进行跳转。

使用默认配置快速恢复 Viewer 状态

如果你的应用中包含了用于隐藏或显示预览控件的逻辑,有时可能需要将 Viewer 状态快速恢复为初始配置。

此时,可以直接将按钮配置重置为默认值,例如启用全部按钮。这在调试或切换不同使用场景时非常方便。

使用"排除法"隐藏指定功能

除了显式指定要显示哪些按钮之外,还可以反过来,只排除不希望出现的功能。

例如,可以通过配置将"发送电子邮件"按钮从 Viewer 中移除,其余功能保持默认可用。这种方式在只需要隐藏少量功能时,会更加直观和高效。

导出列表与云端导出的进一步控制

除了按钮显示之外,FastReport.NET 还支持对导出能力本身进行更精细的控制。

通过 PreviewSettings.Exports,可以编辑当前 Viewer 中可用的导出格式;

通过 PreviewSettings.Clouds,则可以配置云端导出相关的选项。

这使得 Viewer 的行为不仅可以从界面层进行裁剪,也可以从功能层进行限制,更适合对权限和使用范围有明确要求的系统。

总结

FastReport.NET 的 Viewer 并不是一个固定、不可调整的组件。

通过设计器配置和运行时代码控制,可以根据实际业务场景,对报表查看器进行裁剪和定制,让用户只看到真正需要的功能。这种方式不仅可以提升使用体验,也能让报表系统在复杂业务场景下保持清晰和高效。

留言联系我们,获取最新产品免费试用!

相关推荐
mudtools1 天前
搭建一套.net下能落地的飞书考勤系统
后端·c#·.net
玩泥巴的2 天前
搭建一套.net下能落地的飞书考勤系统
c#·.net·二次开发·飞书
快乐非自愿2 天前
C# 中的 Span 和内存:.NET 中的高性能内存处理
java·c#·.net
Traced back2 天前
【.NET7 WinForm 实战】三层架构+EF Core+多数据库+完整功能(源码+教程+脚本)
数据库·架构·.net
波波0073 天前
每日一题:IEnumerable和IQueryable区别?
.net·面试题
light blue bird3 天前
产线多并发客户端指令操作场景组件
jvm·oracle·.net·winform
小先生8123 天前
.NET Core后台任务队列
.net·.netcore
步步为营DotNet3 天前
深度解析.NET中LINQ的延迟执行:提升性能与资源管理的关键
.net·solr·linq
无风听海3 天前
.NET10之WebApplicationBuilder
.net