Partilhar via


Comece com os controlos do Visualizador de Relatórios

Os controlos do Visualizador de Relatórios podem ser usados para integrar relatórios da linguagem de definição de relatórios (RDL) dos Serviços de Relatórios nas aplicações WebForms e WinForms. Para informações detalhadas sobre atualizações recentes, consulte as notas de versão para os controlos do Visualizador de Relatórios para WebForms e WinForms do SSRS.

Adicionar o controlo do Visualizador de Relatórios a um novo projeto web

  1. Crie um novo ASP.NET Site Vazio ou abra um projeto ASP.NET existente.

    Podes usar o .NET Framework 4.6 ou qualquer versão mais recente.

    Captura de ecrã do Visual Studio, destacando um novo ASP.NET Site Vazio.

  2. Instale o pacote NuGet de controlo do Visualizador de Relatórios através da consola do gestor de pacotes NuGet.

    Install-Package Microsoft.ReportingServices.ReportViewerControl.WebForms
    
  3. Adicione uma nova página .aspx ao projeto e registre o conjunto de controlo do Visualizador de Relatórios para utilização dentro da página.

    <%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>
    
  4. Adicione um ScriptManagerControl à página.

  5. Adicione o controlo do Visualizador de Relatórios à página. O seguinte excerto pode ser atualizado para referenciar um relatório alojado num servidor de relatórios remoto.

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

A página final deve assemelhar-se ao seguinte exemplo.

<%@ 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>

Atualizar um projeto existente para usar o controlo do Visualizador de Relatórios

Certifique-se de atualizar quaisquer referências de assembly para a versão 15.0.0.0, incluindo a web.config do projeto e todas as páginas .aspx que referenciam o controlo do visualizador.

Exemplo de alterações no 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>

Exemplo .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>

Adicionar o controlo do Visualizador de Relatórios a um novo projeto Windows Forms

  1. Crie uma nova Aplicação Windows Forms ou abra um projeto existente.

    Podes usar o .NET Framework 4.6 ou qualquer versão mais recente.

    Captura de ecrã do Visual Studio, destacando uma nova aplicação Windows Forms.

  2. Instale o pacote NuGet de controlo do Visualizador de Relatórios através da consola do gestor de pacotes NuGet.

    Install-Package Microsoft.ReportingServices.ReportViewerControl.WinForms
    
  3. Adiciona um novo controlo a partir do código ou adiciona o controlo à barra de ferramentas.

    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);
    }
    

Como definir 100% de altura no controlo do Visualizador de Relatórios

Quando defines a altura do controlo do visualizador para 100%, o elemento pai deve ter uma altura definida, ou todos os antepassados devem ter alturas percentuais.

Defina a altura de todos os antepassados para 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>

Definir o atributo de altura do pai

Para mais informações sobre comprimentos percentuais de viewport, veja Comprimentos percentuais de viewport.

<!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>

Adicionar o controlo à barra de ferramentas Visual Studio

O Controlo do Visualizador de Relatórios é agora fornecido como um pacote NuGet e já não aparece na caixa de ferramentas Visual Studio por defeito. Podes adicionar o controlo manualmente à caixa de ferramentas.

  1. Instale o pacote NuGet para o WinForms ou WebForms como mencionado anteriormente.

  2. Remova o Controlo do Visualizador de Relatórios que está listado na caixa de ferramentas.

    Captura de ecrã da caixa de ferramentas do Visual Studio, destacando Eliminar no controlo ReportViewer.

  3. Clique com o botão direito em qualquer lugar da caixa de ferramentas e selecione Escolher Itens....

    Captura de ecrã da caixa de ferramentas Visual Studio, a destacar a opção Escolher Itens.

  4. Nos Componentes do .NET Framework, selecione Navegar.

    Captura de ecrã do Visual Studio, a destacar o botão Explorar no diálogo de Componentes do .NET Framework.

  5. Selecione o Microsoft.ReportViewer.WinForms.dll ou Microsoft.ReportViewer.WebForms.dll do pacote NuGet que instalou.

    Observação

    O pacote NuGet será instalado no diretório de soluções do seu projeto. O caminho até à dll será semelhante ao seguinte: {Solution Directory}\packages\Microsoft.ReportingServices.ReportViewerControl.Winforms.{version}\lib\net40 ou {Solution Directory}\packages\Microsoft.ReportingServices.ReportViewerControl.WebForms.{version}\lib\net40.

  6. O novo controlo deve ser exibido dentro da caixa de ferramentas. Se quiseres, podes depois mover para outro separador dentro da caixa de ferramentas.

    Captura de ecrã do novo controlo ReportViewer na caixa de ferramentas Visual Studio.

Problemas comuns

O controlo do visualizador foi concebido para navegadores modernos. O controlo pode não funcionar como esperado se o navegador renderizar a página usando o modo de compatibilidade do IE. Os sites da intranet podem exigir uma meta tag para sobrepor o comportamento padrão do navegador.

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

Páginas do NuGet.org

Aqui estão ligações para artigos no site NuGet.org sobre as versões WebForm e WinForm do controlo do Visualizador de Relatórios:

Feedback do fórum

Avise a equipa sobre os problemas nos fóruns de Serviços de Relatórios.