ReportViewer 2010 не загружает источник данных из кода - PullRequest
4 голосов
/ 15 июня 2011

Я создал проект с простым отчетом RDLC в ASP.NET, который, когда я связываю 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 Ответ

7 голосов
/ 15 июня 2011

ОК, как обычно, вскоре после публикации вопроса вы найдете решение.

Решением этой проблемы было убедиться, что настройка DataSource выполняется только тогда, когда страница не являетсяпостбэк.Итак, коротко оберните блок кода в:

If Not Page.IsPostBack Then

    <set datasource here>

End If

Я полагаю, это из-за AJAX-природы средства просмотра отчетов?Если бы кто-нибудь мог пролить свет на то, почему это так, мне было бы интересно услышать это.

...