다음을 통해 공유


내보내기를 수행하는 세 가지 메서드 만들기

이 부분에서는 내보내기를 수행하는 다음과 같은 세 가지 private 도우미 메서드를 만듭니다.

  • ExportSetup()
  • ExportSelection()
  • ExportCompletion()

이러한 메서드는 이 자습서의 뒷부분에서 단추 클릭 이벤트 메서드를 통해 호출됩니다. 먼저 ExportSetup() 도우미 메서드를 만듭니다.

ExportSetup() 메서드를 만들려면

  1. Web Form 또는 Windows Form을 엽니다.

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

  3. 클래스의 맨 위에 세 가지 클래스 선언을 추가합니다.

``` vb
Private exportPath As String
Private myDiskFileDestinationOptions As DiskFileDestinationOptions
Private myExportOptions As ExportOptions
```

``` csharp
private string exportPath;
private DiskFileDestinationOptions diskFileDestinationOptions;
private ExportOptions exportOptions;
```

나중에 ExportSetup() 메서드에서 이러한 도우미 클래스를 인스턴스화합니다.
  1. 반환 값이 없는 ExportSetup()라는 private 도우미 메서드를 클래스의 맨 아래에 만듭니다.

    Public Sub ExportSetup()
    
    End Sub
    
    private void ExportSetup()
    {
    }
    
  2. 메서드 안에서 exportPath 문자열 변수를 하드 드라이브의 루트 디렉터리로 설정합니다.

``` vb
exportPath = "C:\Exported\"
```

``` csharp
exportPath = "C:\\Exported\\";
```

<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>Exported 폴더를 웹 서버의 웹 디렉터리 내에 배치하려면 폴더 이름 앞에 Request.PhysicalApplicationPath 속성을 접두사로 추가합니다.</p></td>
</tr>
</tbody>
</table>
  1. exportPath 문자열의 디렉터리가 이미 있는지 여부를 테스트하는 조건 블록을 만듭니다.

    If Not System.IO.Directory.Exists(exportPath) Then
    
    End If
    
    if (!System.IO.Directory.Exists(exportPath))
    {
    }
    
  2. 조건 블록 안에서 System.IO.Directory의 CreateDirectory() 메서드를 호출하여 exportPath 문자열과 같은 이름의 디렉터리를 만듭니다.

``` vb
System.IO.Directory.CreateDirectory(exportPath)
```

``` csharp
System.IO.Directory.CreateDirectory(exportPath);
```
  1. 조건 블록 외부에서 DiskFileDesintationOptions 클래스를 인스턴스화합니다.

    myDiskFileDestinationOptions = New DiskFileDestinationOptions()
    
    diskFileDestinationOptions = new DiskFileDestinationOptions();
    
  2. hierarchicalGroupingReport 인스턴스의 ExportOptions 속성으로 ExportOptions 인스턴스를 채웁니다.

``` vb
myExportOptions = hierarchicalGroupingReport.ExportOptions
```

``` csharp
exportOptions = hierarchicalGroupingReport.ExportOptions;
```

<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><a href="ms227453(v=vs.90).md">&quot;프로젝트 설정&quot;</a>의 <a href="ms227530(v=vs.90).md">&quot;추가 설정 요구 사항&quot;</a>에서 hierarchicalGroupingReport를 인스턴스화하고 이 인스턴스를 CrystalReportViewer 컨트롤에 바인딩했습니다.</p></td>
</tr>
</tbody>
</table>
  1. ExportOptions 인스턴스의 ExportDestinationType 속성을 열거형 선택 항목 ExportDestinationType.DiskFile로 설정합니다.

    myExportOptions.ExportDestinationType = ExportDestinationType.DiskFile
    
    exportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
    
  2. Windows 프로젝트의 경우 ExportOptions 인스턴스의 ExportFormatOptions 속성 값을 지웁니다. 웹 사이트의 경우에는 클릭 이벤트가 발생할 때마다 변수가 자동으로 지워지므로 이 코드 줄이 필요하지 않습니다.

    myExportOptions.ExportFormatOptions = Nothing
    
    exportOptions.ExportFormatOptions = null;
    

이제 ExportSelection() 도우미 메서드를 만듭니다.

ExportSelection() 메서드를 만들려면

  1. Web Form 또는 Windows Form을 엽니다.

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

  3. 내보내기 형식을 선택하지 않았는지 확인하는 데 사용되는 부울 선언을 클래스의 맨 위에 추가합니다.

    Private selectedNoFormat As Boolean = False
    
    private bool selectedNoFormat = false;
    
  4. 반환 값이 없는 ExportSelection()라는 private 도우미 메서드를 클래스의 맨 아래에 만듭니다.

``` vb
Public Sub ExportSelection()

End Sub
```

``` csharp
private void ExportSelection()
{
}
```
  1. 메서드 안에서 ExportFormatType 열거형의 멤버를 참조하는 "Select Case" [Visual Basic] 또는 "switch" [C#] 문을 만듭니다. 이 열거형은 이전 절차에서 만든 exportTypesList DropDownList 컨트롤의 SelectedIndex를 기반으로 합니다.
``` vb
Select Case exportTypesList.SelectedIndex

Case ExportFormatType.NoFormat

Case ExportFormatType.CrystalReport

Case ExportFormatType.RichText

Case ExportFormatType.WordForWindows

Case ExportFormatType.Excel

Case ExportFormatType.PortableDocFormat

Case ExportFormatType.HTML32

Case ExportFormatType.HTML40

End Select
```

``` csharp
switch ((ExportFormatType)exportTypesList.SelectedIndex)
{
case ExportFormatType.NoFormat:
break;
case ExportFormatType.CrystalReport:
break;
case ExportFormatType.RichText:
break;
case ExportFormatType.WordForWindows:
break;
case ExportFormatType.Excel:
break;
case ExportFormatType.PortableDocFormat:
break;
case ExportFormatType.HTML32:
break;
case ExportFormatType.HTML40:
break;
}
```

이제 ExportCompletion() 도우미 메서드를 만듭니다.

ExportCompletion() 메서드를 만들려면

  1. Web Form 또는 Windows Form을 엽니다.

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

  3. 반환 값이 없는 ExportCompletion()라는 private 도우미 메서드를 클래스의 맨 아래에 만듭니다.

``` vb
Public Sub ExportCompletion()

End Sub
```

``` csharp
private void ExportCompletion()
{
}
```
  1. "ex"라는 변수로 참조되는 Exception 클래스를 사용하여 메서드 안에 try/catch 블록을 만듭니다.

    Try
    
    Catch ex As Exception
    
    End Try
    
    try
    {
    }
    catch (Exception ex)
    {
    }
    
  2. try 블록 안에서 부울 변수 selectedNoFormat을 테스트하는 조건 블록을 만듭니다.

    If selectedNoFormat Then
    
    Else
    
    End If
    
    if (selectedNoFormat)
    {
    }
    else
    {
    }
    
  3. If 블록 안에서 message Label 컨트롤의 Text 속성을 MessageConstants 클래스의 FORMAT_NOT_SUPPORTED 상수로 설정합니다.

<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>이 자습서에 사용되는 MessageConstants 클래스는 <a href="ms227453(v=vs.90).md">&quot;프로젝트 설정&quot;</a>의 <a href="ms227530(v=vs.90).md">&quot;추가 설정 요구 사항&quot;</a>에서 만들었습니다.</p></td>
</tr>
</tbody>
</table>

``` vb
message.Text = MessageConstants.FORMAT_NOT_SUPPORTED
```

``` csharp
message.Text = MessageConstants.FORMAT_NOT_SUPPORTED;
```
  1. Else 블록 안에서 hierarchicalGroupingReport 인스턴스의 Export() 메서드를 호출합니다.
``` vb
hierarchicalGroupingReport.Export()
```

``` csharp
hierarchicalGroupingReport.Export();
```
  1. Else 블록 안에서 message Label 컨트롤의 Text 속성을 MessageConstants 클래스의 SUCCESS 상수로 설정합니다.

    message.Text = MessageConstants.SUCCESS
    
    message.Text = MessageConstants.SUCCESS;
    
  2. catch 블록 안에서 message Label 컨트롤의 Text 속성을 MessagesConstants 클래스의 FAILURE 상수로 설정한 다음 여기에 Exception 매개 변수의 Message 속성을 추가합니다.

    message.Text = MessageConstants.FAILURE & ex.Message
    
    message.Text = MessageConstants.FAILURE + ex.Message;
    
  3. try/catch 블록 외부에서 message Label 컨트롤의 Visible 속성을 "True"로 설정합니다.

    message.Visible = True
    
    message.Visible = true;
    
  4. Windows 프로젝트의 경우 selectedNoFormat 부울 변수를 false로 재설정합니다. 웹 사이트의 경우에는 클릭 이벤트가 발생할 때마다 변수가 False로 자동 재설정되므로 이 코드 줄이 필요하지 않습니다.

    selectedNoFormat = False
    
    selectedNoFormat = false;
    

지금까지 내보내기를 수행하는 세 가지 private 도우미 메서드를 모두 만들었습니다.