更新 2.4.2010 是的,这是一个老问题,但我想我会提供更新。所以,我再次使用 ReportViewer,它在初始加载时仍然呈现缓慢。唯一的区别是 SQL 数据库位于报告服务器上。
更新 3.16.2009
我已经完成了分析,并不是 SQL 导致 ReportViewer 在第一次调用时呈现缓慢。在第一次调用时,ReportViewer 控件锁定 UI 线程并使程序无响应。大约 5 秒后,ReportViewer 将解锁 UI 线程并显示“正在生成报告”,然后最终显示报告。我知道 5 秒并不多,但这不应该发生。我的同事在他的程序中做同样的事情,并且 ReportViewer 会根据任何请求立即显示“正在生成报告”。
唯一的区别是报告服务器在一台服务器上,而数据在另一台服务器上。但是,当我在 SSRS 中开发报告时,没有任何延迟。
更新
我注意到只有第一次加载 ReportViewer 需要很长时间;相同或不同报告的每个后续加载都加载得很快。
我有一个在远程处理模式下使用的WinForms ReportViewer,当调用 ReportViewer.RefreshReport() 方法时,它最多可能需要 30 秒才能呈现。但是,报告本身运行得很快。
这是设置我的 ReportViewer 的代码:
rvReport.ProcessingMode = ProcessingMode.Remote
rvReport.ShowParameterPrompts = False
rvReport.ServerReport.ReportServerUrl = New Uri(_reportServerURL)
rvReport.ServerReport.ReportPath = _reportPath
这是 ReportViewer 最多可能需要 30 秒才能呈现的地方:
rvReport.RefreshReport()