【问题标题】:SSRS Parameter Issue with ReportViewerReportViewer 的 SSRS 参数问题
【发布时间】:2009-10-08 19:05:27
【问题描述】:

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

但是,当报表查看器显示时,参数提示不会显示,并且会显示一条消息,

此报告需要报告的默认值或用户定义的值 参数“预订状态”。要运行或订阅此报告, 您必须提供参数值。

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

此外,当表单首次显示时,Show / Hide Parameter 按钮是灰色的。如果我单击刷新按钮,则启用参数按钮。这是如果查看器在调用刷新之前没有获取参数。

有人能解释一下为什么我不能先让查看器提示输入参数,然后再尝试刷新/运行报告吗?

【问题讨论】:

  • 您使用的是报表服务器还是本地呈现?我知道 ASP.NET Reportviewer 控件仅在使用报表服务器时显示参数。
  • 它使用的是报表服务器,但它是 windows 窗体报表查看器控件,而不是 ASP.NET 控件。
  • @Vince:不,我从来没有找到解决方案。我最终只调用了 RefreshReport() 而不是 SetDisplayMode()。

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


【解决方案1】:

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

ReportViewer.Messages = ReportViewer.Messages

.NET Reflector 之旅解释了原因:

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

调用 rsParams.EnsureParamsLoaded 的唯一其他方法是 RefreshReport。而且方法是私有的,所以没有希望使用继承。将 Messages 设置为自身,虽然非常狡猾,但这是我能找到的唯一解决方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 2015-01-04
    • 1970-01-01
    相关资源
    最近更新 更多