Начало работы с элементами управления средства просмотра отчетов

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

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

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

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

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

  2. Установите пакет NuGet элемента управления Report Viewer через консоль диспетчера пакетов 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>

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

Убедитесь, что вы обновили все ссылки на сборки до версии 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 для элемента управления Report Viewer через консоль диспетчера пакетов 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 % для элемента управления Report Viewer

Если для элемента управления средством просмотра задана высота 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.