다음을 통해 공유


보고서 바인딩

앞서 "프로젝트 설정"의 지침에 따라 이 자습서의 절차를 실행할 준비를 할 때 CrystalReportViewer 컨트롤을 Web Form에 배치했습니다. 그러나 부분 보고서를 표시하려면 CrystalReportPartsViewer 컨트롤을 사용해야 합니다.

이 부분에서는 Customers 보고서를 인스턴스화하고 이 보고서를 CrystalReportPartsViewer 컨트롤에 바인딩합니다. 그런 다음 이전 절차에서 만든 부분 보고서가 표시되는지 테스트합니다.

보고서는 다음과 같은 두 가지 방식으로 인스턴스화하고 바인딩할 수 있습니다.

  • 포함 보고서
  • 비포함 보고서

아래 절차 중 필요한 단계를 하나만 선택합니다.

  • 포함 보고서를 사용하는 경우 다음 절차에 따라 보고서를 포함 보고서로 인스턴스화합니다.
  • 비포함 보고서를 사용하는 경우 다음 두 번째 절차에 따라 보고서를 비포함 보고서로 인스턴스화합니다.

"보고서 데이터 필터링" 작업으로 이동합니다.

Customers 보고서를 포함 보고서로 인스턴스화하고 CrystalReportPartsViewer 컨트롤에 바인딩하려면

  1. Web Form을 엽니다.

  2. 보기 메뉴에서 디자이너를 클릭합니다.

  3. CrystalReportViewer 컨트롤을 삭제합니다.

  4. 도구 상자에서 Crystal Reports 노드를 열고 CrystalReportPartsViewer 컨트롤을 찾습니다.

  5. CrystalReportPartsViewer 컨트롤을 Web Form으로 끕니다.

  6. 속성 창에서 다음과 같이 ID 속성을 설정합니다.

    • Visual Basic 웹 사이트의 경우 ID 속성을 "myCrystalReportPartsViewer"로 설정합니다.
    • C# 웹 사이트의 경우 ID 속성을 "crystalReportPartsViewer"로 설정합니다.
  7. 보기 메뉴에서 코드를 클릭하여 이 Web Form에 대한 코드 숨김 클래스를 표시합니다.

  8. customersReport 변수를 사용하여 Customers 보고서 래퍼 클래스에 대한 새로운 클래스 수준의 선언을 추가합니다. 액세스 한정자를 private으로 설정합니다.

    Private customersReport As Customers
    
    private Customers customersReport;
    
  9. ConfigureCrystalReports() 메서드 내에서 보고서 래퍼 클래스를 인스턴스화합니다.

    Note참고

    ConfigureCrystalReports() 메서드는 "프로젝트 설정"에서 만들었습니다.

    customersReport = New Customers()
    
    customersReport = new Customers();
    
  10. 보고서를 인스턴스화하는 코드의 다음 줄에서 CrystalReportPartsViewer 컨트롤의 ReportSource 속성을 인스턴스화된 보고서 클래스로 바인딩합니다(변수 이름: customersReport).

    myCrystalReportPartsViewer.ReportSource = customersReport
    
    crystalReportPartsViewer.ReportSource = customersReport;
    
    Note참고

    CrystalReportPartsViewer 컨트롤을 Web Form 또는 Windows Form에 추가했으므로 코드를 통해 이 컨트롤의 인스턴스에 액세스할 수 있습니다. IntelliSense에서 CrystalReportPartsViewer 컨트롤 인스턴스를 인식하지 못하는 경우 CrystalReportPartsViewer 컨트롤을 이 코드 숨김 클래스에 클래스 수준 선언으로 추가했는지 확인하십시오.

Customers 보고서를 비포함 보고서로 인스턴스화하고 CrystalReportPartsViewer 컨트롤에 바인딩하려면

이제 프로젝트를 빌드하고 실행할 준비가 되었습니다.

  1. Web Form을 엽니다.

  2. 보기 메뉴에서 코드를 클릭합니다.

  3. customersReport 변수를 사용하여 ReportDocument 보고서 래퍼 클래스에 대한 새로운 클래스 수준의 선언을 추가합니다. 액세스 한정자를 private으로 설정합니다.

``` vb
Private customersReport As ReportDocument
```

``` csharp
private ReportDocument customersReport;
```

<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\e2c9s1d7.alert_note(ko-kr,VS.90).gif" alt="Note" class="note" />참고</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>ReportDocument 클래스는 CrystalDecisions.CrystalReports.Engine 네임스페이스의 멤버입니다. 이 네임스페이스에 대한 &quot;Imports&quot; [Visual Basic] 또는 &quot;using&quot; [C#] 선언은 <a href="ms227453(v=vs.90).md">&quot;프로젝트 설정&quot;</a>에서 추가했습니다. ReportDocument를 인스턴스화하고 보고서를 네임스페이스에 로드하면 보고서를 포함하지 않고도 SDK를 통해 보고서에 액세스할 수 있습니다.</p></td>
</tr>
</tbody>
</table>
  1. "프로젝트 설정"의 한 절차를 통해 추가한 ConfigureCrystalReports() 메서드 내에서 ReportDocument 클래스를 인스턴스화합니다.

    customersReport = New ReportDocument()
    
    customersReport = new ReportDocument();
    
  2. 문자열 변수를 선언하고 이름을 reportPath로 지정한 다음 이 변수에 로컬 보고서의 런타임 경로를 할당합니다. 이 경로는 웹 사이트와 Windows 프로젝트 간에 다르게 결정됩니다.

    • 웹 사이트의 경우 로컬 보고서 파일의 이름을 문자열 매개 변수로 Server.MapPath() 메서드에 전달합니다. 그러면 런타임에 로컬 보고서가 하드 드라이브 파일 디렉터리 경로에 매핑됩니다.

      Dim reportPath As String = Server.MapPath("Customers.rpt")
      
      string reportPath = Server.MapPath("Customers.rpt");
      
    • Windows 프로젝트의 경우 백슬래시를 사용하여 Application.StartupPath 속성과 로컬 보고서 파일 이름을 연결합니다. 그러면 보고서가 Windows 실행 파일과 동일한 디렉터리에 매핑됩니다.

      Note참고

      컴파일할 때 보고서를 실행 파일이 있는 디렉터리에 복사하십시오.

      Dim reportPath As String = Application.StartupPath & "\" & "Customers.rpt"
      
      string reportPath = Application.StartupPath + "\\" + "Customers.rpt";
      
  3. ReportDocument 인스턴스의 Load() 메서드를 호출하여 reportPath 문자열 변수를 전달합니다.

``` vb
customersReport.Load(reportPath)
```

``` csharp
customersReport.Load(reportPath);
```
  1. 보고서를 로딩하는 코드의 다음 줄에서 CrystalReportPartsViewer의 ReportSource 속성을 ReportDocument 인스턴스에 바인딩합니다.

    myCrystalReportPartsViewer.ReportSource = customersReport
    
    crystalReportPartsViewer.ReportSource = customersReport;
    

Customers 보고서가 로드되는지 테스트하려면

인스턴스화하기로 선택한 대상이 포함 보고서 클래스이든 ReportDocument 클래스를 통한 비포함 보고서 클래스이든 상관없이 여기에 사용되는 변수 이름은 customersReport로 동일합니다. 이렇게 하면 이후의 절차에서 공통 코드 집합을 사용할 수 있습니다.

이제 프로젝트를 빌드하고 실행할 준비가 되었습니다. 아직 도시 매개 변수 필드에 값을 설정하는 코드를 작성하지 않았으므로 보고서를 로드할 수 없습니다. 이 자습서의 후반부에서 도시 매개 변수 필드의 값을 추가합니다.

  1. 빌드 메뉴에서 솔루션 빌드를 선택합니다.

  2. 빌드 오류가 발생하면 바로 수정합니다.

  3. 디버그 메뉴에서 시작을 클릭합니다.

    Customers 보고서가 웹 브라우저에 표시됩니다.

  4. 국가를 클릭하여 지역 목록을 표시합니다.

  5. 지역을 클릭하여 고객 이름, 작년 매출액 및 도시 필드를 표시합니다.

  6. Visual Studio로 돌아간 다음 중지를 클릭하여 디버그 모드를 종료합니다.