我有一个SQL Reporting Services报告(使用Report Builder v2.0构建的SQL 2008),它有一个多选整数参数(在本例中是一个商店列表)。
默认值为0
(“所有商店”)。该参数作为varchar(1024)
传递给存储过程。
这一切都可以在Report Builder或Reporting Services网站上正常工作。
但是,在使用ReportViewer
组件的ASP.NET网站上,每次选择“查看报告”时,参数都会重置为默认值。
我已经尝试将视图设置为非异步加载(更改渲染容器?)以及我可以找到的任何其他设置,但没有成功。有没有人知道解决这个问题的技巧?
答案 0 :(得分:2)
ReportViewer
控件位于母版页内。每次单击“查看报告”按钮时,它都会进行回发并重置会话。
我在报告设置方法之前添加了if (!IsPostBack)
。
答案 1 :(得分:1)
对于那些因原始海报未列出的原因而遇到此错误的人......
这是类似的情况。
您有一个使用多选报表参数的报表。 此参数由数据源填充,该数据源将其值基于某些表查询。
当您使用此报告参数的“全选”选项并按“查看报告”按钮时,该参数将重置为空白,并且不会生成您的报告。
我认为发生此问题是因为在执行查询时某些内容会使数据集无效,但我无法100%确定。
我所知道的是,通过使用表变量作为数据集的查询源,您可以解决这个问题。
例如,您的CityDataSource可以由查询填充:
SELECT DISTINCT city, city as SortOrder from accounts
UNION
SELECT 'All' as city, '0' as SortOrder
ORDER BY SortOrder
如果您一直在撰写SQL Reporting Services报告,您可能偶然发现了一次或两次此解决方案。
现在,我们将CityDataSource查询更改为如下所示:
DECLARE @citytable TABLE (city varchar(255), sortorder varchar(255))
INSERT INTO @citytable (city, sortorder) VALUES
(
SELECT DISTINCT city, city as SortOrder from accounts
)
SELECT city, sortorder FROM @citytable ORDER BY sortorder
通过这样做,您的报告的参数将不再重置。
我怀疑存储过程也会起作用。
答案 2 :(得分:1)
我发现了与原始海报相似的代码错误。每次加载页面时,我都会(重新)设置报表服务器凭据,而不是在初始化时。显然,设置报告凭据会重置所有参数。