【问题标题】:Save and re-load the saved rdlc report保存并重新加载保存的 rdlc 报告
【发布时间】:2010-07-14 08:54:45
【问题描述】:

我正在 WPF 中开发一个应用程序,我需要在其中生成和显示报告。我正在使用 RDLC 生成和显示报告。报告的要求是

  1. 应该生成并显示报告。
  2. 用户应该能够保存报告(他们没有指定保存报告的格式。)
  3. 用户应该能够加载和查看保存的报告。

我目前正在做的是,我正在从 RDLC 文件中生成一个临时 pdf 文件来显示报告。如果用户希望保存报告,报告将保存为 PDF,否则临时 PDF 文件将被删除。当用户想要加载保存的报告时,他可以,因为它是PDF格式。

在程序中,我使用 WPF 中的“winformhost”控件来显示报表。还使用了 ReportViewer 控件。

但我现在面临的问题是显示报告相当慢,因为我们同时使用“winformhost”控件和 PDF 格式。

我的问题是,如果我使用这种生成报告并将报告显示为 PDF 的逻辑,如何提高性能?如果不可能,有没有其他方法可以保存报告并在需要时重新加载,从而增加报告显示的过程?

提前致谢, 阿尼什

【问题讨论】:

  • 我认为在您的应用程序中重新打开已保存的报告不是一个好主意;最好每次都要求用户重新生成报告,以便获得最新数据。用户可以随时将报告保存为 SSRS 支持的任何格式(pdf、excel、tiff 等)并打开以再次查看。

标签: wpf rdlc


【解决方案1】:

在我看来,您可以通过分离关注点来提高性能。我的意思是,最好从您的自定义类而不是直接从 DB 中为报告生成数据集。

例如,如果我希望我的报告显示:订单年份 - 订单总数 - 客户。我将创建一个类似

的类
class CustomerStatistics
{
    public int OrderYear {get;set;}
    public int OrderQty {get;set;}
    public string CustomerName {get;set;}

} 

完成此操作后,您将能够利用多线程。例如,我知道 OrderQty 的计算需要一段时间,所以我把它放在一个单独的线程中。

此外,您可以通过为一些需要处理大型数据集的繁重计算创建存储过程来提高性能。如果是这种情况,则应使用 INTERSECT、EXCEPT 等集合操作。优化查询。

这是我的一些想法。

干杯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    相关资源
    最近更新 更多