【问题标题】:ReportViewer 2010 Not Loading Datasource from codeReportViewer 2010 未从代码加载数据源
【发布时间】:2011-06-15 11:50:48
【问题描述】:

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

我过去曾在 WinForms 应用程序上使用过此功能,没有遇到任何问题,但这是我第一次尝试在 ASP.NET 中进行此操作,但没有成功。

这是我用来在Page_Load 事件中设置DataSource 的代码。正如我所说,使用相同的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 中,您可以看到不断生成大量脚本块(列表框不断增长):

在此过程中,加载微调器只是转了一半,重新启动并重复。页面没有重新加载。

有什么想法吗?

【问题讨论】:

    标签: asp.net reporting-services rdlc reportviewer


    【解决方案1】:

    好的,像往常一样,在您发布问题后不久,您就会找到解决方案。

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

    If Not Page.IsPostBack Then
    
        <set datasource here>
    
    End If
    

    我猜这是因为reportviewer 的AJAX 特性?如果有人能解释为什么会这样,我很想听听。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多