ReportViewer的SSRS参数问题

时间:2009-10-08 19:05:28

标签: .net winforms reporting-services reportingservices-2005

我有一个Winforms应用程序,它使用ReportViewer控件来显示SSRS报告。我有一个报告,其中包含许多必须由用户设置的参数。我特意将其中一个参数设置为没有默认值,以便在运行报表之前参数提示将显示在报表查看器中。

但是,当报告查看器显示时,参数提示不会显示,并显示消息

  

此报告需要报告的默认值或用户定义值   参数'ReservationStatus'。要运行或订阅此报告,   你必须提供一个参数值。

如果我执行ReportViewer.RefreshReport(),则会显示提示。但是,我不想调用它,因为我还调用ReportViewer.SetDisplayMode()方法将其置于打印模式。假设这种方法调用RefreshReport()方法。

此外,首次显示表单时,Show / Hide Parameter按钮显示为灰色。如果单击刷新按钮,则启用参数按钮。如果观看者在调用刷新之前没有获取参数,则为a。

有人可以解释为什么我似乎不能首先让查看器提示参数,然后尝试刷新/运行报告?

1 个答案:

答案 0 :(得分:0)

在报表控件上设置ReportViewer.Messages属性会导致参数窗格刷新。我能用这个替换RefreshReport:

ReportViewer.Messages = ReportViewer.Messages

.NET Reflector之旅解释了原因:

  • ReportViewer.Messages调用rsParams.ApplyCustomResources
  • rsParams.ApplyCustomResources调用rsParams.EnsureParamsLoaded

调用rsParams.EnsureParamsLoaded的唯一其他方法是RefreshReport。并且该方法是Private,因此没有希望使用继承。将消息设置为自身虽然非常好,但却是我能找到的唯一解决方法。