【发布时间】:2009-01-20 17:48:25
【问题描述】:
我的 SSRS 报告中有几个参数。有些是多值的,有些是常规的下拉列表。每次选择不同的参数值时,页面都会刷新。有什么办法可以避免每次参数选择时都会出现这个页面刷新。
提前致谢。 玛丽亚
【问题讨论】:
-
它们是链接参数吗? ie - one 的值驱动第二个下拉列表?
标签: reporting-services parameters
我的 SSRS 报告中有几个参数。有些是多值的,有些是常规的下拉列表。每次选择不同的参数值时,页面都会刷新。有什么办法可以避免每次参数选择时都会出现这个页面刷新。
提前致谢。 玛丽亚
【问题讨论】:
标签: reporting-services parameters
我今天刚遇到这个问题,下面的帖子肯定对我有帮助。
http://blog.summitcloud.com/2009/12/fix-refresh-of-parameters-in-ssrs/
引用帖子:
根据 Microsoft,如果默认值或有效值列表是 对于 RS 来说“太复杂”(可能像
=Year()表达式一样简单) 引擎在运行时理解它将确定它是依赖的 因此是刷新的候选者。
链接中的帖子显示了一个简单的解决方法示例:
如果可以的话,把这些 VB 表达式转换成数据集 根据 SQL 语句返回值。所以
=Year()在 表达式会变成Select Year(getdate()) as CurYear
希望对你有帮助。
【讨论】:
除非您愿意滚动自己的报表查看器控件,否则不容易。这样做是因为 SSRS 具有可用于确定其他参数值的参数。例如,假设您正在查看网站用户,并且您的第一个选项是操作系统,也许它有 Vista、XP 和 Mac。
当您选择 Vista 时,页面会刷新以获取所有不同版本的 Vista 的列表。
如果你正在使用这样的东西,那么你将无法阻止刷新。
【讨论】:
在这个例子中,我尝试了DateTime参数回发
希望它也适合你
对于参数中的DateTime 字段,首先将参数设置为虚拟日期值,然后将此DateTime 值分配给报告的实际DateTime 参数。
假设我们有一个存储过程,我们必须提供 From Date 和 To Date
DateTime 参数Datetime_Dummy 作为Name 和DateTime 作为DataType
=Today()
DateTime 参数FromDate参数的DataType设置为DateTime
=Parameters!Datetime_Dummy.Value
这可以防止页面在选择新的From 日期时回发。
【讨论】:
根据我在其他地方读到的一篇文章,以下是一种对我有用的方法。
在我的场景中,我有一个布尔参数,我直接提供了 Yes 和 No 标题以及相应的 true 和 false 值(不是通过查询)。我也有 2 个日期时间参数。这些都没有相互关联。
每次,我输入任何一天的值并进行标记,SSRS 都会自行刷新。似乎 SSRS 试图解析表达式,在我的例子中是 Yes 和 NO 选项的值。
解决方案是使用数据集返回 Yes 和 No 值,这为我解决了问题。
【讨论】:
解决这个问题相当长,但是我能够弄清楚。 页面不断刷新,因为您在参数之间存在依赖关系(您创建的最后一个参数,取决于您之前创建的所有参数)
为了解决这个问题,您需要按照以下步骤删除依赖项:
1)右键单击“报表数据”窗格中的“数据集”文件夹 -> 显示隐藏的数据集(SSRS 2008 会自动为您添加的每个参数创建一个数据集)
2) 双击出现的每个隐藏数据集(即参数数据集)-> 查询-> 查询设计器,右上角有一个像尺子顶部的蓝色三角形(设计模式),在从[数据库名称]开始的查询结束,您需要删除之前的所有内容,直到(不包括)ON ROWS(从底部开始的第一个ON ROWS)ALSO DELETE ALL THE CLOSING BracketS')' AT END OF查询
3) 单击确定应用更改,然后单击参数并删除该列表中的所有内容,然后按确定应用。
4)展开Report Data中的Parameters文件夹,双击每个参数->Advanced->Never Refresh
这应该负责刷新 :) 谢谢, 克里斯
【讨论】:
对我来说,这是通过在 web.config 中禁用 X-Content-Type-Options: nosniff 自定义标头来解决的。
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
<!--
<add name="X-Content-Type-Options" value="nosniff" />
THIS BREAKS SSRS REPORTS, causes clickable controls to immediately reload page
-->
<add name="X-XSS-Protection" value="1; mode=block" />
</customHeaders>
【讨论】:
我之前已经做过很多次了,这只是根据项目的需要通过各种排列和组合来消除参数依赖性。
只要做以下事情。
我希望它会有所帮助。
谢谢。
【讨论】: