我最近开始使用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。
答案 0 :(得分:2)
报告查看器包含更新面板。您必须在报表查看器的预呈现事件中调用更新面板的Update方法:
protected void ReportViewer2_PreRender(object sender, EventArgs e)
{
((UpdatePanel)this.ReportViewer2.Controls[1]).Update();
}