很遗憾,看起来没有简单的方法可以做到这一点。有关更多信息,请参见http://www.jameskovacs.com/blog/DiggingDeepIntoReportingServices.aspx。如果您查看该帖子的评论, 有一些解决方法可绕过此问题,但它们并不十分优雅。最简单的解决方案需要在报表代码中的某个位置具有报告参数列表,这显然违反了DRY原则,但如果您想要最简单的解决方案,可能只能接受这一点。
您可能需要重新考虑不使用外部程序集的限制,因为我认为使用外部程序集会更容易实现这个目标。或者,如果您的报表不会经常更改,您可以手动创建参数名称和值列表。
如果我理解你的问题,就像我一样操作: 在报表上放置一个文本框,然后在设置报表时插入以下内容: ="参数1:" + Parameters!Parameter.Label + ",参数2:" + Parameters!Parameter2.Label...
当然,这不是最美观的东西,但在我们的应用程序中它确实运行得很好。
我使用标签而不是值,因为我们有日期时间值,用户只关心短日期或月份和年份(取决于情况),并且我已经在设置参数时完成了格式化工作。
我可以想到至少两种方法来实现这个。第一种可能有效,第二种肯定有效。
使用 Web 服务。我相当确定我看到了获取参数集合的 API。即使没有直接访问,您也可以创建一个标准集合,并在 foreach 循环中从一个集合复制 ReportParameter 对象到另一个集合 - 然后访问 Count,通过取消引用 ReportParameter 实例可用的单个参数属性。
报表是 RDL。RDL 是 XML。创建一个 XmlDocument 并加载 RDL 文件,然后使用 DOM 做任何您喜欢的事情,包括设置默认值甚至重写连接字符串。
如果您的应用程序无法访问 RDL 文件系统,则可以通过 Web 服务获取它们。