Reporting Services ReportViewer 컨트롤을 사용 하 여 시작-통합Integrating Reporting Services Using ReportViewer Controls - Get Started

개발자가 ASP.NET 웹 사이트 및 Reporting Services 2016 ReportViewer 컨트롤을 통해 Windows Forms 앱에서 페이지 매긴된 보고서를 포함할 수 있습니다는 방법에 대해 알아봅니다.Learn how developers can embed paginated reports in ASP.NET web sites, and Windows Forms apps, through the Reporting Services 2016 ReportViewer Control. 새 프로젝트에서 컨트롤을 추가 하거나 기존 프로젝트를 업데이트할 수 있습니다.You can add the control to a new project, or update an existing project.

새 웹 프로젝트에 ReportViewer 컨트롤 추가Adding the ReportViewer control to a new web project

  1. ASP.NET 빈 웹 사이트 또는 기존 ASP.NET 프로젝트를 엽니다.Create a new ASP.NET Empty Web Site or open an existing ASP.NET project.

    ssRS--새-ASPNET-프로젝트 만들기

  2. ReportViewer 2016 제어 nuget 패키지를 통해 설치 된 Nuget 패키지 관리자 콘솔합니다.Install the ReportViewer 2016 control nuget package via the Nuget package manager console.

    Install-Package Microsoft.ReportingServices.ReportViewerControl.WebForms
    
  3. 프로젝트에 새.aspx 페이지를 추가 하 고 페이지 내에서 사용 하기 위해 ReportViewer 컨트롤 어셈블리를 등록 합니다.Add a new .aspx page to the project and register the ReportViewer control assembly for use within the page.

    <%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>
    
  4. 추가 ScriptManagerControl 페이지에 있습니다.Add a ScriptManagerControl to the page.

  5. 페이지에 ReportViewer 컨트롤을 추가 합니다.Add the ReportViewer control to the page. 아래 코드 조각 원격 보고서 서버에 호스팅된 보고서를 참조 하도록 업데이트할 수 있습니다.The snippet below can be updated to reference a report hosted on a remote report server.

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

마지막 페이지는 다음과 같습니다.The final page should look like the following.

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

<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=14.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="http://AContosoDepartment/ReportServer" ReportPath="/LatestSales" />
        </rsweb:ReportViewer>
    </form>
</body>
</html>

ReportViewer 컨트롤을 사용 하도록 기존 프로젝트를 업데이트 합니다.Updating an existing project to use the ReportViewer control

기존 프로젝트에 ReportViewer 2016 컨트롤의 사용, Nuget 통해 컨트롤을 추가 및 버전으로 어셈블리 참조를 업데이트 하려면 14.0.0.0합니다.To make use of the ReportViewer 2016 control in an existing project, add the control via Nuget and update the assembly references to version 14.0.0.0. 프로젝트의 web.config 및 ReportViewer 컨트롤을 참조 하는 모든.aspx 페이지의 업데이트도 포함 됩니다.This will include updating the project's web.config and all .aspx pages that reference the ReportViewer control.

샘플 web.config 변경 내용Sample web.config changes

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

샘플.aspxSample .aspx

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

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

<!DOCTYPE html>

새 Windows Forms 프로젝트에 ReportViewer 컨트롤 추가Adding the ReportViewer control to a new Windows Forms project

  1. Windows Forms 응용 프로그램 또는 기존 프로젝트를 엽니다.Create a new Windows Forms Application or open an existing project.

    ssRS--새-winforms-프로젝트 만들기

  2. ReportViewer 2016 제어 nuget 패키지를 통해 설치 된 Nuget 패키지 관리자 콘솔합니다.Install the ReportViewer 2016 control nuget package via the Nuget package manager console.

    Install-Package Microsoft.ReportingServices.ReportViewerControl.WinForms
    
  3. 코드에서 새 컨트롤을 추가 또는 도구 상자에 컨트롤을 추가할합니다.Add a new control from code or add the control to the toolbox.

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

보고서 뷰어 2016 컨트롤에 100% 높이 설정 하는 방법How to set 100% height on the Report Viewer 2016 control

새 보고서 뷰어 2016 컨트롤 HTML5 표준 모드의 페이지에 대해 최적화 된 모든 최신 브라우저에서 작동 합니다.The new Report Viewer 2016 control is optimized for HTML5 Standards mode pages and works on all modern browsers. 이전 RVC 컨트롤과 이전에 100% 높이 속성을 설정 하면 정상적으로 완료 상위 항목 중에 지정 된 높이 하는 경우에 합니다.In the past, with the old RVC control, when you set the 100% height property, it worked even if none of the ancestors had height specified. HTML5에서이 동작이 변경 되었습니다.This behavior has changed in HTML5. 새 RVC 컨트롤에서이 속성을 설정 하면 부모 요소에 정의 된 높이 하는 경우에 제대로 작동, 즉, auto의 값이 아님 또는 RVC의 모든 상위 항목 100% 높이 너무 합니다.When you set this property on the new RVC control, it will work correctly only if the parent element has a defined height, i.e. not a value of auto, or all the ancestors of RVC have 100% height too.

이렇게 하려면 두 가지 예는 다음과 같습니다.Below are the two examples to do this.

100% 높이의 모든 부모 요소를 설정 하 여By setting the height of all the parent elements to 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="http://test/ReportServer" ReportPath="/testreport" />
        </rsweb:ReportViewer>
    </div>
    </form>
</body>
</html>

Reportviewer 컨트롤의 부모에 스타일 높이 특성을 설정 하 여By setting the style height attribute on the parent of the reportviewer control

뷰포트 백분율 길이 대 한 자세한 내용은 참조 뷰포트 백분율 길이합니다.For more information about viewport percentage lengths, see 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="http://test/ReportServer" ReportPath="/testreport" />
        </rsweb:ReportViewer>
    </div>
    </form>
</body>
</html>

Visual Studio 도구 모음에 컨트롤 추가Adding control to Visual Studio toolbar

이제 보고서 뷰어 컨트롤은 NuGet 패키지로 제공 됩니다.The Report Viewer Control is now shipped as a NuGet package. 이 때문에 기본적으로 Visual Studio 도구 상자에 표시 하는 보고서 뷰어 컨트롤을 표시 되지 않습니다.Because of this, you will not see the Report Viewer Control show up in the Visual Studio toolbox by default. 다음을 수행 하 여 도구 상자에 컨트롤을 추가할 수 있습니다.You can add the control to the toolbox by doing the following.

  1. WinForms 또는 WebForms 위에서 언급 한 대로 대 한 NuGet 패키지를 설치 합니다.Install the NuGet package for either the WinForms or WebForms as mentioned above.

  2. 도구 상자에 나열 된 ReportViewer 컨트롤을 제거 합니다.Remove the ReportViewer Control that is listed in the toolbox. 이는 12.x의 버전으로 제어 합니다.This is the the control with a version of 12.x.

    ssRS-제거-오래-rvcontrol-도구 상자

  3. 도구 상자에서 아무 곳 이나 클릭 마우스 오른쪽 단추로 선택한 후 항목 선택... **.Right click in anywhere in the toolbox and then select **Choose Items....

    ssRS-도구 상자--항목 선택

  4. .NET Framework 구성 요소선택, 찾아보기합니다.On the .NET Framework Components, select Browse.

    ssRS-도구 상자-찾아보기

  5. 선택 된 Microsoft.ReportViewer.WinForms.dll 또는 Microsoft.ReportViewer.WebForms.dll 설치한 NuGet 패키지에서 합니다.Select the Microsoft.ReportViewer.WinForms.dll or Microsoft.ReportViewer.WebForms.dll from the NuGet package you installed.

    참고

    NuGet 패키지는 프로젝트의 솔루션 디렉터리에 설치 됩니다.The NuGet package will be installed in the solution directory of your project. Dll 경로 다음과 같은으로: {Solution Directory}\packages\Microsoft.ReportingServices.ReportViewerControl.Winforms.{version}\lib\net40 또는 {Solution Directory}\packages\Microsoft.ReportingServices.ReportViewerControl.WebForms.{version}\lib\net40합니다.The path to the dll will be similar to the following: {Solution Directory}\packages\Microsoft.ReportingServices.ReportViewerControl.Winforms.{version}\lib\net40 or {Solution Directory}\packages\Microsoft.ReportingServices.ReportViewerControl.WebForms.{version}\lib\net40.

  6. 도구 상자 내에서 새 컨트롤에 표시 됩니다.The new control should display within the toolbox. 이동할 수 있습니다 다음 도구 상자 내에서 다른 탭으로 하려는 경우.You can then move it to another tab within the toolbox if you wish.

    ssRS-도구 상자-rvcontrol

알아두어야 할 사항Things to be aware of

  • 이렇게 하면 현재 프로젝트 내에서 설치 된 NuGet 패키지에 대 한 참조가 추가 됩니다.This will add a reference to the installed NuGet package within your current project. 도구 상자에 있는 항목은 다른 프로젝트에 유지 됩니다.The item in the toolbox will persist to other projects. 새 솔루션/프로젝트에 NuGet 패키지를 설치할 때 도구 상자 항목 이전 버전을 참조할 수도 있습니다.When you install the NuGet package in a new solution/project, the toolbox item may be referencing an older version.

  • 컨트롤은 어셈블리를 더 이상 사용할 수 없는 경우에 도구 상자에 유지 됩니다.The control will remain in the toolbox even if the assembly is not available any longer. 해당 프로젝트를 삭제 하는 경우 Visual Studio 시도 하 고 도구 상자에서 컨트롤을 추가 하는 경우 오류가 throw 됩니다.If that project was deleted, Visual Studio will throw an error if you try and add the control from the toolbox. 이 오류를 해결 하려면 도구 상자에서 컨트롤을 제거 하 고 위의 단계를 사용 하 여 다시 추가 합니다.To correct this error, remove the control from the toolbox and re-add it using the steps above.

일반적인 문제Common issues

  • 2016 ReportViewer 컨트롤은 최신 브라우저에서 사용 되는 설계 되었습니다.The ReportViewer 2016 control is designed to be used with modern browsers. 브라우저 IE 호환 모드에서 웹 페이지를 렌더링 하는 경우 컨트롤이 작동 하지 않을 수 있습니다.The control may not function if browsers render the web page in an IE compatibility mode. 인트라넷 사이트에는 호환 모드에서 인트라넷 페이지 렌더링 것을 권장 설정을 재정의 하려면 다음 메타 태그가 필요할 수 있습니다.Intranet sites may require a meta tag to override setting which encourage rendering intranet pages in compatibility mode.

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

사용자 의견 제공Providing feedback

팀에서 문제에서 볼 수 있는 컨트롤에 대 한 알 수 있도록는 Reporting Services MSDN 포럼 또는에서 전자 메일을 통해 RVCFeedback@microsoft.com 합니다.Let the team know about issues you encounter with the control on the Reporting Services MSDN forums or via email at RVCFeedback@microsoft.com.

참고 항목See also

2016 ReportingViewer 컨트롤에서 데이터 수집Data collection in the 2016 ReportingViewer control
추가 질문이 있으신가요?More questions? Reporting Services 포럼을 이용해 보세요.Try the Reporting Services forum