比较报表生成器和报表查看器时SSRS参数的奇怪行为

时间:2014-07-29 16:24:19

标签: c# sql-server reporting-services ssrs-2008

SQL SERVER 2008 R2 SQL SERVER报告服务Report Builder 3.0 Visual Studio 2010 ASP.NET / C#

我在Report Builder中设计.rdl报告并将它们部署在SharePoint网站上。大部分数据是通过存储过程从SQL Server检索的,其中大部分都采用参数。参数显示在报告的顶部。

大多数用户使用ReportViewer控件在ASP.NET应用程序中使用该报表。

        <rsweb:ReportViewer ID="rvResults" runat="server"  
            ProcessingMode="Remote"
            BackColor="#F5F6F7" ShowZoomControl="true" 
            ShowPrintButton="true" SizeToReportContent="true" ZoomMode="FullPage"
            ShowDocumentMapButton="true" ShowFindControls="true" ShowPageNavigationControls="true"
            ShowPromptAreaButton="False" InternalBorderColor="#ACBBD8">
        </rsweb:ReportViewer>

当我从报表生成器或SharePoint中运行报表时,一切都按预期工作。参数显示在报告的顶部(或侧面),用户可以输入值(主要来自下拉菜单,使用由存储过程或嵌入式SQL填充的数据集)。一些下拉列表是级联的 - 即列表2中的值取决于列表1中选择的值。

当我从ASP.NET应用程序中运行报表时,有两个问题。首先,我收到一个脚本错误:

线:157 错误:Sys.ArgumentNullException:值不能为null。 参数名称:panelsCreated 1

我已将报告中的某些参数设置为NULLABLE并采用NULL的默认值,因为报告的正确操作需要它。

其次,从下拉列表中选择一个值会禁用所有参数值,并使报告无法使用。下面的两张图片显示了这一点。

从报告构建器报告参数(正常工作) enter image description here

从ASP.NET应用程序报告参数(无法正常工作) enter image description here

细心的读者可能会注意到,辅助状态ID控件中显示的值在两者中都不同。在第一个正确的版本中,它显示,而在第二个,它显示。用于填充控件的SQL如下:

SELECT Null AS ID, '<All>' AS Name
UNION
Select Distinct ID, Name
from lutRequestStatusSecondary
Where FKRequestTypeID=1
AND Deleted=0
AND FKStatusID=@StatusID
Order by Name

1 个答案:

答案 0 :(得分:1)

我设置了ScriptMode =&#34; Release&#34;在母版页的ScriptManager中。我不确定为什么它已停止工作(也不知道为什么旧的版本仍在工作!)但这至少是其中一个答案(另一个有效的是在ReportViewer控件上设置AsyncRendering = False)。