ReportViewer 2010不从代码加载数据源

时间:2011-06-15 11:50:48

标签: asp.net reporting-services rdlc reportviewer

我在ASP.NET中创建了一个带有简单RDLC报告的项目,当我在设计时使用DataSource绑定报告的SqlDataSource时,一切正常。但是,如果我删除绑定并尝试从代码中设置DataSource,那么报告似乎永远不会停止加载。

我以前在WinForms应用程序上使用过这个问题并且没有任何问题,但这是我第一次尝试在ASP.NET中运行它,没有运气。

以下是我用于在DataSource事件中设置Page_Load的代码。正如我所说的那样使用相同的SqlDataSource,如果它绑定在.aspx页面中,则可以正常工作。

ReportViewer1.Reset()
ReportViewer1.ProcessingMode = ProcessingMode.Local
ReportViewer1.LocalReport.ReportPath = Server.MapPath("Report.rdlc")
ReportViewer1.LocalReport.DataSources.Clear()
ReportViewer1.LocalReport.DataSources.Add(New ReportDataSource("DataSet1", SqlDataSource1))
ReportViewer1.LocalReport.Refresh()

即使我直接在reportviewer控件中设置了报表,也只是将代码切换为......

ReportViewer1.LocalReport.DataSources.Clear()
ReportViewer1.LocalReport.DataSources.Add(New ReportDataSource("DataSet1", SqlDataSource1))
ReportViewer1.LocalReport.Refresh()

......它仍然是一样的。

此外,在加载报表时,在Visual Studio中,您可以看到正在不断生成大量脚本块(列表框不断增长):

Visual Studio

当这种情况发生时,装载微调器正在中途转动,重新启动并重复。该页面没有重新加载。

有什么想法吗?

1 个答案:

答案 0 :(得分:7)

好的,就像你发布问题后不久一样,你找到了解决方案。

解决方法是确保仅在页面不是回发时才执行DataSource的设置。简而言之,将代码块包装在:

If Not Page.IsPostBack Then

    <set datasource here>

End If

我想这是因为报告查看器的AJAX特性?如果有人能够解释为什么会出现这种情况,我会有兴趣听到它。