“转到报告”(钻取)操作在SSRS和ASP.NET中不起作用

时间:2010-08-11 16:00:50

标签: asp.net ssrs-2008

我最近开始使用SSRS 2008和ASP.Net。 我必须制定一份包含3个不同详细程度的报告。因此,我认为最好的解决方案是开发3种不同的报告并提供一些钻取机制以便进行导航。为此,我将其中一个文本框的“Action”属性设置为“Go to report”并设置正确的URL。

传递给报告的参数需要先验证。因此,为了灵活性和更好的用户体验,我让用户使用标准ASP.Net控件输入参数。当用户在我的自定义按钮“显示报告”上显示时,执行以下代码:

        ReportViewer2.ServerReport.ReportPath = ".. my report path ..";
        ReportViewer2.ServerReport.ReportServerUrl = new Uri(".. my report url ..");
        ReportParameter p1 = new ReportParameter("dateStart", dateStart.ToString());
        ReportParameter p2 = new ReportParameter("dateEnd", dateEnd.ToString());
        ReportViewer2.ServerReport.SetParameters(p1);
        ReportViewer2.ServerReport.SetParameters(p2);
        ReportViewer2.ServerReport.Refresh(); 

然后显示报告,但导航到其他报告的链接不起作用。 您可能会注意到添加的参数是可见的,因此我可以按下报告查看器中嵌入的“查看报告”按钮。如果我这样做,报告会再次呈现,然后就可以了。这就像ReportViewer.ServerReport.Refresh()方法缺少一些东西。

这是一个问题,因为要求说明需要隐藏参数。

当我从VS或报告服务器内部执行报告时,链接工作正常,但在这些情况下,我总是必须按标准的“查看报告”按钮。

这是ReportViewer控件的错误还是我在这里遗漏了什么? 提前谢谢。

此致

的Gonzalo。

1 个答案:

答案 0 :(得分:2)

报告查看器包含更新面板。您必须在报表查看器的预呈现事件中调用更新面板的Update方法:

protected void ReportViewer2_PreRender(object sender, EventArgs e) { ((UpdatePanel)this.ReportViewer2.Controls[1]).Update(); }