ReportViwer隐藏参数和UI参数

时间:2013-07-03 19:24:29

标签: asp.net reporting-services ssrs-2008

我在2012年的asp.net Web表单应用程序中使用asp.net报表查看器控件来处理2012年SQL Server报表服务报表,这些报表是远程rdl格式的报表。

在这些rdl报告文件中,有预先构建的自定义UI字段,例如下拉列表,文本框,复选框。这些UI字段与用户输入参数相关。 报告查看器代码不提供UI参数。

隐藏参数由asp.net报表查看器的代码提供,并在报表查看器的SubmittingParameterValues事件处理程序中:

  protected void ReportViewer1_SubmittingParameterValues(object sender, ReportParametersEventArgs e)
            {
                if (e != null)
                {
                    e.Parameters.Add(new ReportParameter("HiddenWebLoginUserIdParameter", webLoginUserIdVariable ));
                }
            }

每当用户按下报告上的“查看报告”按钮时,该事件的代码就可以正常工作。但是,如果我在包含报表查看器的aspx页面的 Page_Load事件处理程序上添加该隐藏参数(“HiddenWebLoginUserIdParameter”),则报表上的其他用户输入UI参数将被破坏(下拉列表)一旦运行报告,就不会从SSRS等填充列表。我想从报表查看器控件传递隐藏参数,以便在首次加载aspx Web表单时隐藏参数可用。破坏代码行看起来像(Page_Load事件处理程序中的最后一个代码行):

protected void Page_Load(object sender, EventArgs e)
    {
       ....

            ReportViewer1.ServerReport.ReportPath = "MyReportPath";
            ReportViewer1.ServerReport.ReportServerUrl = new Uri(MyReportServerUrl);


            ReportViewer1.ServerReport.SetParameters(new ReportParameter("HiddenWebLoginUserIdParameter", webLoginUserIdVariable ));
        }

        ...
    }  

我的问题:
我不知道为什么在Page_Load事件处理程序中添加隐藏参数不起作用并且在SSRS报告中打破其他UI字段参数,而在SubmittingParameterValues事件处理程序中这样做确实有效。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

我相信你用SetParameters覆盖了参数集合,基本上消除了其他参数。您需要存储当前参数并同时设置所有参数。

答案 1 :(得分:0)

您应该将这些陈述放在if (!Page.IsPostBack) { ... }