Средство просмотра отчетов не загружается, отображается пустое пространство - запускаются локальные файлы RDLC - PullRequest
10 голосов
/ 13 октября 2011

У меня проблема со службами отчетов, работающими с локальными файлами rdlc в версии 2005.

У меня в HTML есть средство просмотра отчетов, настроенное для локального запуска следующим образом:

 <rsweb:ReportViewer ID="ReportingServicesReportViewer" runat="server" Height="100%"
            ProcessingMode="Local" ShowParameterPrompts="False" Width="100%">
        </rsweb:ReportViewer>

В коде

// create SqlConnection
        SqlConnection myConnection = new SqlConnection(ConnectionString);
        myCommand.Connection = myConnection;
        SqlDataAdapter da = new SqlDataAdapter(myCommand);

        //get the data
        DataSet data = new DataSet();
        da.Fill(data);

        if (data != null && data.Tables.Count > 0 && data.Tables[0].Rows.Count > 0)
        {
            ReportingServicesReportViewer.Visible = true;
            ltrStatus.Text = string.Empty;

            //provide local report information to viewer
            ReportingServicesReportViewer.LocalReport.ReportPath = Server.MapPath(Report.RDLCPath);

            //bind the report attributes and data to the reportviewer
            ReportDataSource rds = new ReportDataSource("DataSet1", data.Tables[0]);
            ReportingServicesReportViewer.LocalReport.DataSources.Clear();
            ReportingServicesReportViewer.LocalReport.DataSources.Add(rds);
            ReportingServicesReportViewer.LocalReport.Refresh();
        }
        else
        {
            ReportingServicesReportViewer.Visible = false;
            ltrStatus.Text = "No data to display.";
        }

Когда выполняется метод для заполнения средства просмотра отчетов результатами отчета, ничего не появляется, как будто средства просмотра отчета даже не существует.

То, что я делал, чтобы стрелять до сих пор:

  • Проверено средство просмотра событий на наличие ошибок, и это единственное, что связано который я получаю, [Домен] \ sp_dbadmin Причина: Не удалось открыть явно указанную базу данных. , Тем не мение, Мой пользователь, к которому я подключаюсь, является системным администратором. Я проверил это и уверен, потому что я проверил sys.server_role_members
  • Я пытался выдать себя за зарегистрированного пользователя, но безрезультатно
  • Я создал конкретного пользователя с правами sysadmin и дал все права доступа как из IIS, так и с сервера sql 2008.

Кто-нибудь сталкивался с подобной проблемой, есть идеи?

Ответы [ 10 ]

9 голосов
/ 19 июля 2013

У меня была такая же проблема с VS2012, в отчете показано изображение загрузки, а после завершения загрузки отчет пуст.Данные существуют, но не отображаются.

Решение. Просто измените Report AsyncRendering на False , и отчет снова будет работать нормально.

8 голосов
/ 24 октября 2011

Попробуйте использовать простой отчет, иногда reportviewer выдает исключение, вызванное недействительным RDLC, и показывает пустой отчет.

Попробуйте также отладить проект и посмотрите на окно вывода в Visual Studio: вы увидите предупреждение, выдаваемое механизмом RDL, может быть полезно выяснить причину ошибки.

7 голосов
/ 24 апреля 2014

У меня была такая же проблема, когда я добавлял параметр в rdlc, но не назначал его.Я решил, добавив этот код.

Dim p_Date As Microsoft.Reporting.WebForms.ReportParameter
p_Date = New Microsoft.Reporting.WebForms.ReportParameter("DATE", txtDate.Text)
    Me.ReportViewer1.LocalReport.SetParameters(New Microsoft.Reporting.WebForms.ReportParameter() {p_Date})
    ReportViewer1.LocalReport.Refresh()
3 голосов
/ 09 ноября 2016

В моем случае элемент управления ReportViewer не выдает сообщения об ошибках (EventViewer или тело элемента управления ReportViewer), просто пустая страница.Я думаю, что это затрудняет поиск и устранение проблемы.Ответом Йоэля Халба был мой ключ!

Свойство IsReadyForRendering было False. В BOL относится к теме параметров.

Я мог бы проверить каждое значение целых параметров с помощью кода (вы можете выполнить его из непосредственного окна)

   var parameters = ReportViewer1.LocalReport.GetParameters()

Вы найдете проблемный параметр при просмотре свойства State со значением «MissingValidValue»

Надеюсь, это поможет!

3 голосов
/ 10 февраля 2012

У меня была такая же проблема, и в моем случае оказалось, что я предоставил набор данных, который на самом деле не являлся типом объекта, которого ожидал отчет.

В моей ситуации отчет ожидал бизнес-объекта, но я указал источник данных SQL.

Я также сталкивался с этой же проблемой, когда в отчете присутствовали параметры, которые не могли быть пустыми или пустыми, но значения параметров не были предоставлены.

Также обратите внимание, что для установки источника данных в коде это должно быть сделано в событии onload, а не в событии page_load.

2 голосов
/ 27 августа 2016

Это потребовалось некоторое время, чтобы выяснить, так что, надеюсь, эти проверки сэкономят вам время:

1) Проверьте web.config

<system.web>
  <httpHandlers>
    <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" validate="false" />
  </httpHandlers>

  <buildProviders>
    <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
 </buildProviders>
</system.web>

<system.webServer>
  <handlers>
    <add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
  </handlers>
<system.webServer>

2) попробуйте элемент управления средства просмотра отчетов непосредственно в режиме конструктора, прежде чем переносить любую конфигурацию в код

Управление программой просмотра отчетов в жестком коде

3) Убедитесь, что диспетчер сценариев находится на странице перед средством просмотра отчетов

4) Убедитесь, что отчет запускается вне окна просмотра проекта, локально или на сервере SSRS

5) УБЕДИТЕСЬ, ЧТО ДОКЛАД ИМЕЕТ ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ ДЛЯ ВСЕХ ПАРАМЕТРОВ! Отчеты, которые требуют параметров и не имеют значений по умолчанию, отображаются пустыми.

1 голос
/ 25 сентября 2018

после изменения размера бумаги или средства просмотра отчетов не будет работать, вы можете попробовать мое решение, добавив больше задержки для

WaitControlDisplayAfter

иногда ваши данные слишком велики для обработки для асинхронного

1 голос
/ 14 июля 2015

В моем случае у преступника были параметры со значением Allow null = false (не проверено) ... Не спрашивайте меня, почему.

0 голосов
/ 17 июля 2018

Я потратил много дней, чтобы выяснить подобную проблему.Может быть, это может кому-то помочь.Я прочитал почти все темы на stackoverflow, но чтение комментариев здесь заставило меня попробовать это.В моем случае были показаны первые две строки (строка параметров и строка с возможностью скрыть параметры), но строки, содержащие кнопки управления и сам отчет, были пусты.Нажатие View report не привело ни к каким действиям.

preview of auto generated HTML web page

То, что я сделал, было загрузкой отчета, которыйпараметры, не предоставляя их - я хотел, чтобы пользователь заполнил их - на Page_Load.

protected void Page_Load( object sender, EventArgs e )
{
    this.LoadReport();
}

private void LoadReport()
{
        // retrieve path param from "Reports/{path}" URL
        string reportPath = Request.QueryString[ "path" ] as string;
        string reportServerUrl = System.Configuration.ConfigurationManager.AppSettings[ "ReportServerUrl" ];

        this.MainReport.ProcessingMode = ProcessingMode.Remote;
        this.MainReport.ServerReport.ReportServerUrl = new Uri( reportServerUrl );
        this.MainReport.ServerReport.ReportPath = reportPath;
        this.MainReport.ServerReport.Refresh();
}

После изменения кода Page_Load на приведенный ниже все работает нормально.

protected void Page_Load( object sender, EventArgs e )
{
    if ( !this.IsPostBack )
        this.LoadReport();
}
0 голосов
/ 13 августа 2015

Была такая же проблема. Потребовалось время, чтобы разобраться со мной, но оказалось, что я случайно создал новый элемент управления reportViewer, поэтому я потерял то, что разработал Visual Studio Designer для меня, когда проектировал форму, и именно поэтому элемент управления ReportViewer появлялся пустым - Я никогда не устанавливал никаких свойств для объекта ReportViewer в Visual Studio Designer.

Глупая ошибка, но потребовалось некоторое время, чтобы понять.

...