Поделиться через


Интеграция служб Reporting Services с помощью элементов управления "Средство просмотра отчетов" — начало работы

Элементы управления средства просмотра отчетов можно использовать для интеграции отчетов RDL Reporting Services в приложения WebForms и WinForms. Подробные сведения о последних обновлениях см . в заметках о выпуске элементов управления средства просмотра отчетов для webForms и WinForms SSRS.

Добавление элемента управления средства просмотра отчетов в новый веб-проект

  1. Создайте новый пустой веб-сайт ASP.NET или откройте существующий проект ASP.NET.

    Вы можете использовать .NET Framework 4.6 или любую более новую версию.

    Снимок экрана: Visual Studio, на котором выделен новый ASP.NET пустой веб-сайт.

  2. Установите пакет NuGet элемента управления средства просмотра отчетов с помощью консоли диспетчера пакетов NuGet.

    Install-Package Microsoft.ReportingServices.ReportViewerControl.WebForms
    
  3. Добавьте в проект новую ASPX-страницу и зарегистрируйте сборку элемента управления средства просмотра отчетов для использования на странице.

    <%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>
    
  4. Добавьте на страницу ScriptManagerControl.

  5. Добавьте на страницу элемент управления средства просмотра отчетов. Следующий фрагмент кода можно обновить, чтобы ссылаться на отчет, размещенный на удаленном сервере отчетов.

    <rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote">
      <ServerReport ReportPath="" ReportServerUrl="" />
    </rsweb:ReportViewer>
    

Последняя страница должна выглядеть следующим образом.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Sample" %>

<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager runat="server"></asp:ScriptManager>
        <rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote">
            <ServerReport ReportServerUrl="https://AContosoDepartment/ReportServer" ReportPath="/LatestSales" />
        </rsweb:ReportViewer>
    </form>
</body>
</html>

Обновление имеющегося проекта для использования элемента управления средства просмотра отчетов

Обязательно обновите все ссылки на сборки до версии 15.0.0.0, в том числе файл web.config проекта и все ASPX-страницы со ссылками на элемент управления "Средство просмотра".

Пример изменений web.config

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  https://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.6">
      <assemblies>
        <!-- All assemblies updated to version 15.0.0.0. -->
        <add assembly="Microsoft.ReportViewer.Common, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        <add assembly="Microsoft.ReportViewer.DataVisualization, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        <add assembly="Microsoft.ReportViewer.Design, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        <add assembly="Microsoft.ReportViewer.ProcessingObjectModel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        <add assembly="Microsoft.ReportViewer.WebDesign, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        <add assembly="Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        <add assembly="Microsoft.ReportViewer.WinForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
      </assemblies>
      <buildProviders>
        <!-- Version updated to 15.0.0.0. -->
        <add extension=".rdlc"
          type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
      </buildProviders>
    </compilation>
    <httpRuntime targetFramework="4.6"/>
    <httpHandlers>
      <!-- Version updated to 15.0.0.0 -->
      <add path="Reserved.ReportViewerWebControl.axd" verb="*"
        type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"
        validate="false"/>
    </httpHandlers>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
    <handlers>
      <!-- Version updated to 15.0.0.0 -->
      <add name="ReportViewerWebControlHandler" verb="*" path="Reserved.ReportViewerWebControl.axd" preCondition="integratedMode"
        type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
    </handlers>
  </system.webServer>
</configuration>

Пример ASPX

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="SampleAspx" %>

<!-- Update version to 15.0.0.0 -->
<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>

<!DOCTYPE html>

Добавление элемента управления средства просмотра отчетов в новый веб-проект Windows Forms

  1. Создайте новое приложение Windows Forms или откройте существующий проект.

    Вы можете использовать .NET Framework 4.6 или любую более новую версию.

    Снимок экрана: Visual Studio с выделением нового приложения Windows Forms.

  2. Установите пакет NuGet элемента управления средства просмотра отчетов с помощью консоли диспетчера пакетов NuGet.

    Install-Package Microsoft.ReportingServices.ReportViewerControl.WinForms
    
  3. Добавьте новый элемент управления из кода или добавьте его на панель инструментов.

    private Microsoft.Reporting.WinForms.ReportViewer reportViewer1;
    
    private void InitializeComponent()
    {
        this.reportViewer1 = new Microsoft.Reporting.WinForms.ReportViewer();
        this.SuspendLayout();
        // 
        // reportViewer1
        // 
        this.reportViewer1.Location = new System.Drawing.Point(168, 132);
        this.reportViewer1.Name = "reportViewer1";
        this.reportViewer1.ServerReport.BearerToken = null;
        this.reportViewer1.Size = new System.Drawing.Size(396, 246);
        this.reportViewer1.TabIndex = 0;
        // 
        // Form1
        // 
        this.Controls.Add(this.reportViewer1);
    }
    

Способы настройки 100 % высоты для элемента управления средства просмотра отчетов

При задании значения 100 % для высоты элемента управления "Средство просмотра" необходимо установить для родительского элемента определенную высоту или настроить для всех предков процентное значение высоты.

Настройка значения высоты на 100 % для всех предков

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <style>
        html,body,form,#div1 {
            height: 100%; 
        }
    </style>
   </head>
<body>
    <form id="form1" runat="server">
    <div id="div1" >
            <asp:ScriptManager runat="server"></asp:ScriptManager>
        <rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote" Height="100%" Width="100%">
            <ServerReport ReportServerUrl="https://test/ReportServer" ReportPath="/testreport" />
        </rsweb:ReportViewer>
    </div>
    </form>
</body>
</html>

Настройка атрибута высоты родительского элемента

Дополнительные сведения о размерах окна просмотра в процентах см. в разделе Viewport-percentage lengths (Размеры окна просмотра в процентах).

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
    <form id="form1" runat="server">
    <div style="height:100vh;">
            <asp:ScriptManager runat="server"></asp:ScriptManager>
        <rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote" Height="100%" Width="100%">
            <ServerReport ReportServerUrl="https://test/ReportServer" ReportPath="/testreport" />
        </rsweb:ReportViewer>
    </div>
    </form>
</body>
</html>

Добавление элемента управления на панель элементов Visual Studio

Элемент управления средства просмотра отчетов теперь поставляется в виде пакета NuGet и больше не отображается на панели элементов Visual Studio по умолчанию. Вы можете добавить этот элемент управления на панель элементов вручную.

  1. Установите пакет NuGet для WinForms или WebForms, как упоминалось ранее.

  2. Удалите элемент управления средства просмотра отчетов, указанный на панели элементов.

    Снимок экрана: панель элементов Visual Studio, выделенная на элементе управления ReportViewer.

  3. Щелкните правой кнопкой мыши где-либо на панели элементов и выберите пункт Выбрать элементы...

    Снимок экрана: панель элементов Visual Studio, выделенная параметром

  4. В окне Компоненты .NET Framework щелкните Обзор.

    Снимок экрана: Visual Studio, на котором выделена кнопка

  5. В установленном пакете NuGet выберите Microsoft.ReportViewer.WinForms.dll или Microsoft.ReportViewer.WebForms.dll.

    Примечание.

    Пакет NuGet будет установлен в каталоге решения. Путь к DLL будет иметь следующий вид: {Solution Directory}\packages\Microsoft.ReportingServices.ReportViewerControl.Winforms.{version}\lib\net40 или {Solution Directory}\packages\Microsoft.ReportingServices.ReportViewerControl.WebForms.{version}\lib\net40.

  6. Новый элемент управления должен появиться на панели элементов. При необходимости его можно переместить на другую вкладку в панели элементов.

    Снимок экрана: новый элемент управления ReportViewer на панели элементов Visual Studio.

Распространенные проблемы

Элемент управления "Средство просмотра" предназначено для современных браузеров. Элемент управления может не работать должным образом, если браузер отрисовывает страницу с помощью режима совместимости IE. На сайтах интрасети может потребоваться метатег для переопределения поведения браузера по умолчанию.

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

Документация на сайте NuGet.org

Ниже приведены ссылки на статьи на сайте NuGet.org о версиях WebForm и WinForm элемента управления средства просмотра отчетов.

Отзыв на форуме

Если у вас возникли проблемы, сообщите об этом на форумах Reporting Services.