在VS2010 Beta 2中,无论是使用本地还是远程模式,Web Report Viewer都不会显示报告的内容。
它仅显示以下“已禁用”栏[image]
我创建的报告在报表服务器中运行良好。
以下是显示报告的代码:
ReportViewer1.ProcessingMode = ProcessingMode.Remote;
ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://localhost/reportserver");
ReportViewer1.ServerReport.ReportPath = "/MyReports/Report1";
ReportViewer1.ServerReport.Refresh();
或者
ReportViewer1.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Local;
ReportViewer1.LocalReport.ReportPath = Server.MapPath("Report1.rdlc");
ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", myDataSet);
ReportViewer1.LocalReport.Refresh();
我已经将ScriptManager添加到网页,并在web.config中添加了相应的处理程序条目(在system.web和system.webServer部分中)。
相同的代码在VS2008中运行良好。
有人遇到过同样的问题吗?
答案 0 :(得分:9)
在Beta 2之前,VS加载了Report Viewer 9.0(与VS 2008相同)。 Beta 2使用Report Viewer 10.0,它以不同方式处理异步呈现(使用ASP.Net AJAX与iframe中的呈现内容)。报告查看器是否无限期地显示加载指示符?如果是这样,那么您的页面加载事件中可能会有一些代码告诉ReportViewer重新启动报表处理。如果你每次回发都这样做,那么观众就会陷入无限循环。只需在页面的加载事件中添加 IsPostBack 检查即可解决此问题。
有关详情,请参阅Brian Hartman的报告查看器博客中的“Reports Never Stop Loading With VS 2010”。
答案 1 :(得分:2)
只需使用
if(!isPostBack)
{
//your code here
}
使用reportviewer 10.0.0版本避免ReportViewer无限加载循环 VS2010并使用SSRS2008
答案 2 :(得分:0)
同样的问题......
我们已将一个reportviewer控件添加到从自定义基本表单派生的页面中。在这个基本表单上,我们重写了RenderChildren方法。例如,请参阅文章:http://msdn.microsoft.com/en-us/library/system.web.ui.control.renderchildren.aspx
我们在Beta 2之前没有遇到任何问题,我们的框架在很大程度上依赖于此功能。
答案 3 :(得分:0)
我有同样的问题,MattSlay的回答让我意识到只有当页面不是回发时才需要调用Refresh方法,我的工作Page_Load:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
MainReportViewer.ProcessingMode = ProcessingMode.Remote;
string reportName = this.Request.QueryString["ReportName"];
MainReportViewer.ServerReport.ReportPath = "/Pulse Reports/" + reportName;
MainReportViewer.ServerReport.ReportServerUrl = new Uri("http://10.1.0.48/ReportServer");
MainReportViewer.ServerReport.Refresh();
}
}