SSRS:单击“查看报告”时,ASP.NET ReportViewer参数将重置为默认值

时间:2009-03-26 01:53:27

标签: reporting-services parameters ssrs-2008

我有一个SQL Reporting Services报告(使用Report Builder v2.0构建的SQL 2008),它有一个多选整数参数(在本例中是一个商店列表)。

默认值为0(“所有商店”)。该参数作为varchar(1024)传递给存储过程。

这一切都可以在Report Builder或Reporting Services网站上正常工作。

但是,在使用ReportViewer组件的ASP.NET网站上,每次选择“查看报告”时,参数都会重置为默认值。

我已经尝试将视图设置为非异步加载(更改渲染容器?)以及我可以找到的任何其他设置,但没有成功。有没有人知道解决这个问题的技巧?

3 个答案:

答案 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)

我发现了与原始海报相似的代码错误。每次加载页面时,我都会(重新)设置报表服务器凭据,而不是在初始化时。显然,设置报告凭据会重置所有参数。