在VS2010 Beta 2中,Web Report Viewer不显示报告的内容

时间:2009-11-20 18:55:34

标签: .net reporting-services reportviewer visual-studio-2010-beta-2

在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中运行良好。

有人遇到过同样的问题吗?

4 个答案:

答案 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();
        }
    }