WebForms ReportViewer 컨트롤 사용Using the WebForms ReportViewer Control

보고서 서버에 배포된 보고서 또는 로컬 파일 시스템에 있는 보고서를 보려면 WebForms ReportViewer 컨트롤을 사용하여 웹 응용 프로그램에서 렌더링할 수 있습니다.To view reports deployed to a report server or reports that exist on the local file system, you can use the WebForms ReportViewer control to render them in a Web application.

웹 응용 프로그램에서 ReportViewer 컨트롤을 사용하려면To use the ReportViewer Control in a Web application

  1. MicrosoftMicrosoft ASP.NET 웹 사이트 중 하나를 사용 하 여 MicrosoftMicrosoft Visual C#Visual C# 또는 MicrosoftMicrosoft Visual BasicVisual Basic합니다.Create a new MicrosoftMicrosoft ASP.NET Web Site using either MicrosoftMicrosoft Visual C#Visual C# or MicrosoftMicrosoft Visual BasicVisual Basic.

    - 또는-- Or -

    기존 ASP.NET 웹 사이트를 열고 새 Web Form을 추가합니다.Open an exiting ASP.NET Web Site and add a new Web Form.

  2. 찾을 ScriptManager 컨트롤에 AJAX 확장 그룹에 도구 상자 창 Web form의 디자인 화면으로 끕니다.Locate the ScriptManager control in the AJAX Extensions group in the Toolbox window, and drag it to the design surface of the Web form.

    경우는 도구 상자 은 표시 되지 않는지, 있습니다에서 액세스할 수는 보기 메뉴를 선택 하 여 도구 상자합니다.If the Toolbox is not visible, you can access it from the View menu by selecting Toolbox.

  3. 찾을 ReportViewer 컨트롤에 도구 상자 아래의 디자인 화면으로 끌어서는 ScriptManager 제어 합니다.Locate the ReportViewer control in the Toolbox and drag it to the design surface below the ScriptManager control.

    ReportViewer 라는 reportViewer1 컨트롤을 폼에 추가 됩니다.The ReportViewer control named reportViewer1 is added to the form.

    컨트롤이 폼에 추가 되는 ReportViewer 작업 스마트 태그는 보고서를 선택 하 라는 메시지가 표시 됩니다.After the control is added to the form the ReportViewer Tasks smart tag will appear prompting you to select a report. 보려는 보고서가 보고서 서버 선택에 배포 된 경우는 <서버 보고서 > 에서 옵션은 보고서 선택 드롭 다운 목록입니다.If the report you wish to view has been deployed to a report server select the <Server Report> option from the Choose Report drop-down list. 한 번의 <서버 보고서 > 옵션은 선택한 두 추가 속성이 표시 됩니다 보고서 서버 Url보고서 경로합니다.Once the <Server Report> option is selected two additional properties will appear, Report Server Url and Report Path. 보고서 서버 Url 는 보고서 서버에 대 한 주소와 보고서 경로 렌더링할 보고서의 전체 경로입니다.The Report Server Url is the address to the report server and the Report Path is the full path to the report you want to render.

    로컬 모드에서 보고서를 보려는 경우 하나를 선택는 새 보고서 디자인 옵션을 보고서 디자이너를 시작 하거나 이미 기존 프로젝트에 포함 된 보고서를 선택 합니다.If you want to view a report in local mode select either the Design a new report option to launch the report designer or select a report that is already part of the existing project. 보고서를 선택한 후에 보고서 RDLC 파일의 이름을 입력를 해야는 ReportPath ReportViewer 컨트롤의 속성입니다.After you have selected a report, be sure to enter the name of the report RDLC file in the ReportPath property of the ReportViewer control. 이 속성 아래에 표시는 LocalReport 에서 노드는 속성 창.This property appears under the LocalReport node in the Properties pane.

    보고서를 렌더링할 때 ReportViewer 도구 모음에서 하나 이상의 항목을 숨길 수 있습니다.You have the option of hiding one or more of the items on the ReportViewer toolbar when the report is rendered. 예를 들어 인쇄 단추를 숨길 수 있습니다.For example, you can hide the print button. 도구 모음 항목을 숨기려면 다음 ReportViewer 속성을 설정 False속성 창.To hide toolbar items, set the following ReportViewer properties to False in the Properties pane.

  • ShowBackButtonShowBackButton

  • ShowExportControlsShowExportControls

  • ShowFindControlsShowFindControls

  • ShowPageNavigationControlsShowPageNavigationControls

  • ShowPrintButtonShowPrintButton

  • ShowRefreshButtonShowRefreshButton

  • ShowZoomControlShowZoomControl

원격 처리 모드로 보고서 보기Viewing Reports in Remote Processing Mode

다음 예는 보고서 서버에 배포된 보고서를 렌더링하는 방법을 보여 줍니다.The following example demonstrates how to render a report that has been deployed to a report server. 이 예에서는 AdventureWorks2012AdventureWorks2012 예제 보고서 프로젝트에 포함된 Sales Order Detail 보고서를 사용합니다.This example uses the Sales Order Detail report that is included with the AdventureWorks2012AdventureWorks2012 sample reports project.

이 예에서는 Windows 통합 인증을 사용하므로 먼저 가장을 사용하도록 설정해야 합니다.The example uses integrated Windows Authentication so you first must enable impersonation. 에 다음 줄이 삽입 작업을 수행 하는 web.config 파일:To do this insert the following line into the web.config file:

<!-- Web.config file. -->  
<identity impersonate="true"/>  
참고

가장은 기본적으로 사용 안 함으로 설정되어 있습니다.Impersonation is disabled by default.

C#C#

protected void Page_Init(object sender, EventArgs e)  
{  
    if (!Page.IsPostBack)  
    {  
        // Set the processing mode for the ReportViewer to Remote  
        reportViewer.ProcessingMode = ProcessingMode.Remote;  

        ServerReport serverReport = reportViewer.ServerReport;  

        // Set the report server URL and report path  
        serverReport.ReportServerUrl =  
            new Uri("http://<Server Name>/reportserver");  
        serverReport.ReportPath =  
            "/AdventureWorks Sample Reports/Sales Order Detail";  

        // Create the sales order number report parameter  
        ReportParameter salesOrderNumber = new ReportParameter();  
        salesOrderNumber.Name = "SalesOrderNumber";  
        salesOrderNumber.Values.Add("SO43661");  

        // Set the report parameters for the report  
        reportViewer.ServerReport.SetParameters(  
            new ReportParameter[] { salesOrderNumber });  
    }  
}  

VB.NETVB.NET

Imports Microsoft.Reporting.WebForms  

Partial Class _Default  
    Inherits System.Web.UI.Page  

    Protected Sub Page_Init(ByVal sender As Object, _  
            ByVal e As System.EventArgs) Handles Me.Init  

        If Not Page.IsPostBack Then  

            'Set the processing mode for the ReportViewer to Remote  
            reportViewer.ProcessingMode = ProcessingMode.Remote  

            Dim serverReport As ServerReport  
            serverReport = reportViewer.ServerReport  

            'Set the report server URL and report path  
            serverReport.ReportServerUrl = _  
                New Uri("http://<Server Name>/reportserver")  
            serverReport.ReportPath = _  
                "/AdventureWorks Sample Reports/Sales Order Detail"  

            'Create the sales order number report parameter  
            Dim salesOrderNumber As New ReportParameter()  
            salesOrderNumber.Name = "SalesOrderNumber"  
            salesOrderNumber.Values.Add("SO43661")  

            'Set the report parameters for the report  
            Dim parameters() As ReportParameter = {salesOrderNumber}  
            serverReport.SetParameters(parameters)  

        End If  

    End Sub  

End Class  

로컬 처리 모드로 보고서 보기Viewing Reports in Local Processing Mode

다음 예는 Windows 응용 프로그램의 일부이고 보고서 서버에 배포되지 않은 보고서를 렌더링하는 방법을 보여 줍니다.The following example demonstrates how to render a report that is part of the Windows application and has not been deployed to a report server.

Sales Order Detail 보고서를 웹 사이트에 추가하려면To add the Sales Order Detail report to a Web Site
  1. 보고서를 추가할 웹 사이트를 엽니다.Open the Web Site that the report will be added to.

  2. 웹 사이트 메뉴 선택 기존 항목 추가합니다.From the Website menu, select Add Existing Item.

  3. AdventureWorks 보고서 예제 프로젝트가 설치된 위치를 찾습니다.Browse to the location where the AdventureWorks Report Samples project is installed.

    기본 위치는 C:\Program Files\Microsoft SQL Server\100\Samples\Reporting Services\Report Samples\AdventureWorks Sample Reports입니다.The default location is C:\Program Files\Microsoft SQL Server\100\Samples\Reporting Services\Report Samples\AdventureWorks Sample Reports.

  4. Sales Order Detail.rdl 파일을 선택 하 고 클릭는 추가 단추입니다.Select the Sales Order Detail.rdl file and click the Add button.

    이제 Sales Order Detail.rdl 파일이 프로젝트의 일부여야 합니다.The Sales Order Detail.rdl file should now be part of the project.

  5. 솔루션 탐색기에서 Sales Order Detail.rdl 파일을 마우스 오른쪽 단추로 클릭 하 고 선택 이름 바꾸기합니다.Right-click the Sales Order Detail.rdl file in Solution Explorer and select Rename. 보고서 이름을 Sales Order Detail.rdlc ENTER 키를 누릅니다.Rename the report to Sales Order Detail.rdlc and press ENTER.

    솔루션 탐색기가 표시 되지 않는 열 수 있습니다는 보기 솔루션 탐색기를 선택 하 여 메뉴.If Solution Explorer is not visible, you can open it from the View menu by selecting Solution Explorer.

    다음 코드 예에서는 판매 주문 데이터에 대한 데이터 집합을 만든 다음 Sales Order Detail 보고서를 로컬 모드에서 렌더링합니다.The following code example will create a dataset for the sales order data and then render the Sales Order Detail report in local mode.

C#C#

protected void Page_Init(object sender, EventArgs e)  
{  
    if (!Page.IsPostBack)  
    {  
        // Set the processing mode for the ReportViewer to Local  
        reportViewer.ProcessingMode = ProcessingMode.Local;  

        LocalReport localReport = reportViewer.LocalReport;  

        localReport.ReportPath = "Sales Order Detail.rdlc";  

        DataSet dataset = new DataSet("Sales Order Detail");  

        string salesOrderNumber = "SO43661";  

        GetSalesOrderData(salesOrderNumber, ref dataset);  

        ReportDataSource dsSalesOrder = new ReportDataSource();  
        dsSalesOrder.Name = "SalesOrder";  
        dsSalesOrder.Value = dataset.Tables["SalesOrder"];  

        localReport.DataSources.Add(dsSalesOrder);  

        GetSalesOrderDetailData(salesOrderNumber, ref dataset);  

        ReportDataSource dsSalesOrderDetail = new ReportDataSource();  
        dsSalesOrderDetail.Name = "SalesOrderDetail";  
        dsSalesOrderDetail.Value = dataset.Tables["SalesOrderDetail"];  

        localReport.DataSources.Add(dsSalesOrderDetail);  

        // Create the sales order number report parameter  
        ReportParameter rpSalesOrderNumber = new ReportParameter();  
        rpSalesOrderNumber.Name = "SalesOrderNumber";  
        rpSalesOrderNumber.Values.Add("SO43661");  

        // Set the report parameters for the report  
        localReport.SetParameters(  
            new ReportParameter[] { rpSalesOrderNumber });  
    }  
}  

private void GetSalesOrderData(string salesOrderNumber,  
                           ref DataSet dsSalesOrder)  
{  
    string sqlSalesOrder =  
        "SELECT SOH.SalesOrderNumber, S.Name AS Store, " +  
        "       SOH.OrderDate, C.FirstName AS SalesFirstName, " +  
        "       C.LastName AS SalesLastName, E.Title AS " +  
        "       SalesTitle, SOH.PurchaseOrderNumber, " +  
        "       SM.Name AS ShipMethod, BA.AddressLine1 " +  
        "       AS BillAddress1, BA.AddressLine2 AS " +  
        "       BillAddress2, BA.City AS BillCity, " +  
        "       BA.PostalCode AS BillPostalCode, BSP.Name " +  
        "       AS BillStateProvince, BCR.Name AS " +  
        "       BillCountryRegion, SA.AddressLine1 AS " +  
        "       ShipAddress1, SA.AddressLine2 AS " +  
        "       ShipAddress2, SA.City AS ShipCity, " +  
        "       SA.PostalCode AS ShipPostalCode, SSP.Name " +  
        "       AS ShipStateProvince, SCR.Name AS " +  
        "       ShipCountryRegion, CC.Phone AS CustPhone, " +  
        "       CC.FirstName AS CustFirstName, CC.LastName " +  
        "       AS CustLastName " +  
        "FROM   Person.Address SA INNER JOIN " +  
        "       Person.StateProvince SSP ON " +  
        "       SA.StateProvinceID = SSP.StateProvinceID " +  
        "       INNER JOIN Person.CountryRegion SCR ON " +  
        "       SSP.CountryRegionCode = SCR.CountryRegionCode " +  
        "       RIGHT OUTER JOIN Sales.SalesOrderHeader SOH " +  
        "       LEFT OUTER JOIN  Person.Contact CC ON " +  
        "       SOH.ContactID = CC.ContactID LEFT OUTER JOIN" +  
        "       Person.Address BA INNER JOIN " +  
        "       Person.StateProvince BSP ON " +  
        "       BA.StateProvinceID = BSP.StateProvinceID " +  
        "       INNER JOIN Person.CountryRegion BCR ON " +  
        "       BSP.CountryRegionCode = " +  
        "       BCR.CountryRegionCode ON SOH.BillToAddressID " +  
        "       = BA.AddressID ON  SA.AddressID = " +  
        "       SOH.ShipToAddressID LEFT OUTER JOIN " +  
        "       Person.Contact C RIGHT OUTER JOIN " +  
        "       HumanResources.Employee E ON C.ContactID = " +  
        "       E.ContactID ON SOH.SalesPersonID = " +  
        "       E.EmployeeID LEFT OUTER JOIN " +  
        "       Purchasing.ShipMethod SM ON SOH.ShipMethodID " +  
        "       = SM.ShipMethodID LEFT OUTER JOIN Sales.Store" +  
        "        S ON SOH.CustomerID = S.CustomerID " +  
        "WHERE  (SOH.SalesOrderNumber = @SalesOrderNumber)";  

    SqlConnection connection = new  
        SqlConnection("Data Source=(local); " +  
                      "Initial Catalog=AdventureWorks; " +  
                      "Integrated Security=SSPI");  

    SqlCommand command =  
        new SqlCommand(sqlSalesOrder, connection);  

    command.Parameters.Add(  
        new SqlParameter("SalesOrderNumber",  
        salesOrderNumber));  

    SqlDataAdapter salesOrderAdapter = new  
        SqlDataAdapter(command);  

    salesOrderAdapter.Fill(dsSalesOrder, "SalesOrder");  
}  

private void GetSalesOrderDetailData(string salesOrderNumber,  
                       ref DataSet dsSalesOrder)  
{  
    string sqlSalesOrderDetail =  
        "SELECT  SOD.SalesOrderDetailID, SOD.OrderQty, " +  
        "        SOD.UnitPrice, CASE WHEN " +  
        "        SOD.UnitPriceDiscount IS NULL THEN 0 " +  
        "        ELSE SOD.UnitPriceDiscount END AS " +  
        "        UnitPriceDiscount, SOD.LineTotal, " +  
        "        SOD.CarrierTrackingNumber, " +  
        "        SOD.SalesOrderID, P.Name, P.ProductNumber " +  
        "FROM    Sales.SalesOrderDetail SOD INNER JOIN " +  
        "        Production.Product P ON SOD.ProductID = " +  
        "        P.ProductID INNER JOIN " +  
        "        Sales.SalesOrderHeader SOH ON " +  
        "        SOD.SalesOrderID = SOH.SalesOrderID " +  
        "WHERE   (SOH.SalesOrderNumber = @SalesOrderNumber) " +  
        "ORDER BY SOD.SalesOrderDetailID";  

    using (SqlConnection connection = new  
        SqlConnection("Data Source=(local); " +  
                      "Initial Catalog=AdventureWorks; " +  
                      "Integrated Security=SSPI"))  
    {  

        SqlCommand command =  
            new SqlCommand(sqlSalesOrderDetail, connection);  

        command.Parameters.Add(  
            new SqlParameter("SalesOrderNumber",  
            salesOrderNumber));  

        SqlDataAdapter salesOrderDetailAdapter = new  
            SqlDataAdapter(command);  

        salesOrderDetailAdapter.Fill(dsSalesOrder,  
            "SalesOrderDetail");  
    }  
}  

VB.NETVB.NET

Imports System.Data  
Imports System.Data.SqlClient  
Imports Microsoft.Reporting.WebForms  

Partial Class _Default  
    Inherits System.Web.UI.Page  

    Protected Sub Page_Init(ByVal sender As Object, _  
                ByVal e As System.EventArgs) Handles Me.Init  

        If Not Page.IsPostBack Then  

            'Set the processing mode for the ReportViewer to Local  
            reportViewer.ProcessingMode = ProcessingMode.Local  

            Dim localReport As LocalReport  
            localReport = reportViewer.LocalReport  

            localReport.ReportPath = "Sales Order Detail.rdlc"  

            Dim dataset As New DataSet("Sales Order Detail")  

            Dim salesOrderNumber As String = "SO43661"  

            'Get the sales order data  
            GetSalesOrderData(salesOrderNumber, dataset)  

            'Create a report data source for the sales order data  
            Dim dsSalesOrder As New ReportDataSource()  
            dsSalesOrder.Name = "SalesOrder"  
            dsSalesOrder.Value = dataset.Tables("SalesOrder")  

            localReport.DataSources.Add(dsSalesOrder)  

            'Get the sales order detail data  
            GetSalesOrderDetailData(salesOrderNumber, dataset)  

            'Create a report data source for the sales   
            'order detail data  
            Dim dsSalesOrderDetail As New ReportDataSource()  
            dsSalesOrderDetail.Name = "SalesOrderDetail"  
            dsSalesOrderDetail.Value = _  
                dataset.Tables("SalesOrderDetail")  

            localReport.DataSources.Add(dsSalesOrderDetail)  

            'Create a report parameter for the sales order number   
            Dim rpSalesOrderNumber As New ReportParameter()  
            rpSalesOrderNumber.Name = "SalesOrderNumber"  
            rpSalesOrderNumber.Values.Add("SO43661")  

            'Set the report parameters for the report  
            Dim parameters() As ReportParameter = {rpSalesOrderNumber}  
            localReport.SetParameters(parameters)  

        End If  

    End Sub  

    Private Sub GetSalesOrderData(ByVal salesOrderNumber As String, _  
                               ByRef dsSalesOrder As DataSet)  

        Dim sqlSalesOrder As String = _  
            "SELECT SOH.SalesOrderNumber, S.Name AS Store, " & _  
            "       SOH.OrderDate, C.FirstName AS SalesFirstName, " & _  
            "       C.LastName AS SalesLastName, E.Title AS " & _  
            "       SalesTitle, SOH.PurchaseOrderNumber, " & _  
            "       SM.Name AS ShipMethod, BA.AddressLine1 " & _  
            "       AS BillAddress1, BA.AddressLine2 AS " & _  
            "       BillAddress2, BA.City AS BillCity, " & _  
            "       BA.PostalCode AS BillPostalCode, BSP.Name " & _  
            "       AS BillStateProvince, BCR.Name AS " & _  
            "       BillCountryRegion, SA.AddressLine1 AS " & _  
            "       ShipAddress1, SA.AddressLine2 AS " & _  
            "       ShipAddress2, SA.City AS ShipCity, " & _  
            "       SA.PostalCode AS ShipPostalCode, SSP.Name " & _  
            "       AS ShipStateProvince, SCR.Name AS " & _  
            "       ShipCountryRegion, CC.Phone AS CustPhone, " & _  
            "       CC.FirstName AS CustFirstName, CC.LastName " & _  
            "       AS CustLastName " & _  
            "FROM   Person.Address SA INNER JOIN " & _  
            "       Person.StateProvince SSP ON " & _  
            "       SA.StateProvinceID = SSP.StateProvinceID " & _  
            "       INNER JOIN Person.CountryRegion SCR ON " & _  
            "       SSP.CountryRegionCode = SCR.CountryRegionCode " & _  
            "       RIGHT OUTER JOIN Sales.SalesOrderHeader SOH " & _  
            "       LEFT OUTER JOIN  Person.Contact CC ON " & _  
            "       SOH.ContactID = CC.ContactID LEFT OUTER JOIN" & _  
            "       Person.Address BA INNER JOIN " & _  
            "       Person.StateProvince BSP ON " & _  
            "       BA.StateProvinceID = BSP.StateProvinceID " & _  
            "       INNER JOIN Person.CountryRegion BCR ON " & _  
            "       BSP.CountryRegionCode = " & _  
            "       BCR.CountryRegionCode ON SOH.BillToAddressID " & _  
            "       = BA.AddressID ON  SA.AddressID = " & _  
            "       SOH.ShipToAddressID LEFT OUTER JOIN " & _  
            "       Person.Contact C RIGHT OUTER JOIN " & _  
            "       HumanResources.Employee E ON C.ContactID = " & _  
            "       E.ContactID ON SOH.SalesPersonID = " & _  
            "       E.EmployeeID LEFT OUTER JOIN " & _  
            "       Purchasing.ShipMethod SM ON SOH.ShipMethodID " & _  
            "       = SM.ShipMethodID LEFT OUTER JOIN Sales.Store" & _  
            "        S ON SOH.CustomerID = S.CustomerID " & _  
            "WHERE  (SOH.SalesOrderNumber = @SalesOrderNumber)"  

        Using connection As New SqlConnection( _  
                      "Data Source=(local); " & _  
                      "Initial Catalog=AdventureWorks; " & _  
                      "Integrated Security=SSPI")  

            Dim command As New SqlCommand(sqlSalesOrder, connection)  

            Dim parameter As New SqlParameter("SalesOrderNumber", _  
                salesOrderNumber)  
            command.Parameters.Add(parameter)  

            Dim salesOrderAdapter As New SqlDataAdapter(command)  

            salesOrderAdapter.Fill(dsSalesOrder, "SalesOrder")  

        End Using  

    End Sub  

    Private Sub GetSalesOrderDetailData( _  
                           ByVal salesOrderNumber As String, _  
                           ByRef dsSalesOrder As DataSet)  

        Dim sqlSalesOrderDetail As String = _  
            "SELECT  SOD.SalesOrderDetailID, SOD.OrderQty, " & _  
            "        SOD.UnitPrice, CASE WHEN " & _  
            "        SOD.UnitPriceDiscount IS NULL THEN 0 " & _  
            "        ELSE SOD.UnitPriceDiscount END AS " & _  
            "        UnitPriceDiscount, SOD.LineTotal, " & _  
            "        SOD.CarrierTrackingNumber, " & _  
            "        SOD.SalesOrderID, P.Name, P.ProductNumber " & _  
            "FROM    Sales.SalesOrderDetail SOD INNER JOIN " & _  
            "        Production.Product P ON SOD.ProductID = " & _  
            "        P.ProductID INNER JOIN " & _  
            "        Sales.SalesOrderHeader SOH ON " & _  
            "        SOD.SalesOrderID = SOH.SalesOrderID " & _  
            "WHERE   (SOH.SalesOrderNumber = @SalesOrderNumber) " & _  
            "ORDER BY SOD.SalesOrderDetailID"  

        Using connection As New SqlConnection( _  
                      "Data Source=(local); " & _  
                      "Initial Catalog=AdventureWorks; " & _  
                      "Integrated Security=SSPI")  

            Dim command As New SqlCommand(sqlSalesOrderDetail, _  
                                          connection)  

            Dim parameter As New SqlParameter("SalesOrderNumber", _  
                salesOrderNumber)  
            command.Parameters.Add(parameter)  

            Dim salesOrderDetailAdapter As New SqlDataAdapter(command)  

            salesOrderDetailAdapter.Fill(dsSalesOrder, _  
                "SalesOrderDetail")  

        End Using  

    End Sub  

End Class  

참고 항목See Also

ReportViewer 컨트롤을 사용 하 여 Reporting Services 통합Integrating Reporting Services Using the ReportViewer Controls
ReportViewer 컨트롤 2016에서 데이터 수집Data collection in ReportViewer Control 2016