Windows プロジェクトの ComboBox コントロールの値の設定
ここでは、埋め込みでないレポートのリストを ComboBox コントロールに設定するコードを記述します。getReports() ヘルパー メソッドを使用して、Crystal Reports Web サービスからレポートをリストを生成し、次にそのリストを ComboBox コントロールにバインドします。
Web サイトの場合は、「Web サイトの DropDownList コントロールの値の設定」を参照してください。
Windows フォームを開きます。
[表示]メニューの[コード]をクリックします。
System.IO 名前空間、System.Collections 名前空間、および System.Web.services 名前空間のために、"Imports"[Visual Basic] または "using"[C#] 宣言をクラスの先頭(クラス署名の上)に追加します。
``` vb
Imports System.IO
Imports System.Collections
Imports System.Web.Services
```
``` csharp
using System.IO;
using System.Collections;
using System.Web.Services
```
Form1_Load イベント ハンドラの内部で、getReports() ヘルパー メソッドを使用して Web サービスからレポートの一覧を取得します。その結果を reports 配列に割り当てます。
Dim myReports As ArrayList = getReports()
ArrayList reports = getReports();
次の行で、ArrayList オブジェクトをインスタンス化します。
``` vb
Dim myArrayList As ArrayList = New ArrayList()
```
``` csharp
ArrayList arrayList = new ArrayList();
```
- 次に、reports の各要素によってループする For Each ループを作成します。
``` vb
For Each myPath As String In myReports
Next
```
``` csharp
foreach (string path in reports)
{
}
```
- 次のブロックでは、文字列操作メソッドを使用して各レポートの名前からファイル パスを削除し、文字列リテラルを伴うエスケープ文字で置換します。これらの行を For Each ループの内部に挿入します。
``` vb
Dim myReportNamePrefix As Integer = myPath.LastIndexOf("/") + 1
Dim myReportNameSufix As Integer = myPath.LastIndexOf("?")
Dim myReportNameLength As Integer = myReportNameSufix - myReportNamePrefix
Dim myReportName As String = myPath.Substring(myReportNamePrefix, myReportNameLength)
myReportName = myReportName.Replace("%20", " ")
```
``` csharp
int reportNamePrefix = path.LastIndexOf(@"/") + 1;
int reportNameSufix = path.LastIndexOf(@"?");
int reportNameLength = reportNameSufix - reportNamePrefix;
string reportName = path.Substring(reportNamePrefix, reportNameLength);
reportName = reportName.Replace("%20", " ");
```
- さらに For Each ループの内部で、arrayList に切り詰められたレポート名を追加するコードを 1 行追加します。
``` vb
myArrayList.Add(myReportName)
```
``` csharp
arrayList.Add(reportName);
```
For Each ループの外部で、ArrayList インスタンスを DropDownList コントロールの dataSource プロパティに割り当てます。
これによって、ArrayList データ ソースが ComboBox コントロールにバインドされます。
reportsList.DataSource = mysortedList
reportsList.DataSource = sortedList;
[ファイル]メニューの[すべて保存]をクリックします。
[ビルド]メニューで[ソリューションのビルド]を選択します。
ビルド エラーが発生した場合は、ここで修正します。
次のセクションでは、reportsList ComboBox コントロールでの選択に基づいてレポートをバインドするクリック イベントを追加します。