我在 2012 asp.net Web 表单应用程序中使用 asp.net 报告查看器控件来处理 2012 SQL Server Reporting Service 报告,这些报告是远程 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 事件处理程序中这样做确实有效。任何帮助是极大的赞赏。