2012-01-13 79 views
4

我在使用报表查看器加载RDL文件的Visual Studio 2010(C#)中有一个奇怪的问题。WebForm.ReportViewer无限循环问题

我用下面的代码加载RDL:

 //get the data set and then 
     //. 
     //. 
     //pass the report to the viewer    
     using (FileStream stream = new FileStream(_AccessReportDocument.FileName, FileMode.Open)) 
     { 
      this.AccessReportViewer.LocalReport.LoadReportDefinition(stream); 
     } 
     this.AccessReportViewer.LocalReport.Refresh(); 

的问题是,一旦上面这段代码到达最后一行时,代码会跳转到该页面的卸载方法,然后回到这一点。 AccessReportViewer.LocalReport.Refresh();即无限循环。有谁之前经历过这个吗?我已经读过,与2010年的报告查看器有问题,但主要与设置参数,我还没有试图做...

调试显示所有数据集等被检索罚款 - 所以这是不是问题。

回答

13

如果您在设置数据源时未检查回发,则可能会出现VS2010。这是因为对报表查看器异步加载数据所做的更改。在这里充分的解释:

Reports Never Stop Loading With VS 2010

+0

行,所以我读的文章和管理,通过增加一个检查来解决这个问题,看看(的IsPostBack!)。如果!IsPostBack == true,那么我获取数据并将其绑定到报告。这是有效的,但我不知道为什么它会导致报告无限加载。 – user559142 2012-01-16 10:10:34

+1

这是因为如果您没有检查回传并在页面加载时设置数据源,那么因为报告查看器控件本身会生成异步回发来呈现它自己,然后这会导致你的页面加载并重新设置数据源,重置报告查看器,因此它都会重新开始。 – 2012-01-16 11:04:05