DropDownList コントロールを使用した選択式の変更
このセクションでは、DropDownList コントロールに比較演算子を付けて値を入力します。比較演算子を含む列挙を作成します。
DropDownList コントロールでは、TextBox コントロールに入力したテキストと同じか、それより少ないか、それより大きいか、それ以下か、それ以上か、またはそれと等しくない顧客名を表示するように選択します。
redisplay_Click() イベント メソッドでは、CrystalReportViewer コントロールの SelectionFormula プロパティに現在割り当てられている文字列を変更します。
CeComparisonOperator 列挙を作成する
ソリューション エクスプローラで太字のプロジェクト名を右クリックし、[追加]をポイントして[新しい項目の追加]をクリックします。
[新しい項目の追加]ダイアログ ボックスで、[テンプレート]ビューから[クラス]を選択します。
[名前]フィールドに「CeComparisonOperator」と入力し、[追加]をクリックします。
注
このクラスを Code ディレクトリに配置するように求められる場合があります。[はい]ボタンをクリックします。
クラス署名で、ワード クラスを列挙に変更して、クラスを列挙に変換します。
C# Windows プロジェクトでは、名前空間をプロジェクトの名前に変更することも必要です。
注
Visual Basic では、クラスの開始署名と終了署名の両方を列挙に変更してください。
列挙はコンストラクタを持たないので、C# バージョンのコードで提供されているデフォルトの constructor メソッドを削除します。
列挙内に次の値を入力します。
EqualTo LessThan GreaterThan LessThan_or_EqualTo GreaterThan_or_EqualTo Not_EqualTo
EqualTo, LessThan, GreaterThan, LessThan_or_EqualTo, GreaterThan_or_EqualTo, Not_EqualTo
Web サイトで CeComparisonOperator 列挙から DropDownList コントロールに値を入力する
次の手順では、CeComparisonOperator 列挙を Web サイトまたは Windows プロジェクトの DropDownList コントロールにバインドする方法について説明します。次の手順のいずれかを完了します。
Web フォームを開きます。
[表示]メニューの[コード]をクリックします。
ConfigureCrystalReports() メソッドの Not IsPostBack 条件ブロック内で、選択式の文字列の宣言の前に、DropDownList コントロールの DataSource プロパティを CeComparisonOperator 列挙の値に設定します。
selectOperatorList.DataSource = System.Enum.GetValues(GetType(CeComparisonOperator))
selectOperatorList.DataSource = System.Enum.GetValues(typeof(CeComparisonOperator));
ここで、SelectOperatorList DropDownList の DataBind() メソッドを呼び出して、値をコントロールにバインドします。
``` vb
selectOperatorList.DataBind()
```
``` csharp
selectOperatorList.DataBind();
```
Windows プロジェクトで CeComparisonOperator 列挙から DropDownList コントロールに値を入力する
Windows フォームを開きます。
[表示]メニューの[コード]をクリックします。
ConfigureCrystalReports() メソッド内で、選択式の文字列の宣言の前に SelectOperatorListComboBox の DataSource プロパティを CeComparisonOperator 列挙の値に設定します。
selectOperatorList.DataSource = System.Enum.GetValues(GetType(CeComparisonOperator))
selectOperatorList.DataSource = System.Enum.GetValues(typeof(CeComparisonOperator));
GetSelectedCompareOperator() ヘルパー メソッドを作成する
次に、GetSelectedCompareOperator() ヘルパー メソッドを作成して、選択したインデックスを、比較演算子記号を表す文字列として返します。
- クラスの最後に、文字列変数を返すプライベート ヘルパー メソッド GetSelectedCompareOperator() を作成します。
``` vb
Private Function GetSelectedCompareOperator() As String
End Function
```
``` csharp
private string GetSelectedCompareOperator()
{
}
```
- メソッド内で、CeComparisonOperator 列挙のメンバを参照し、比較演算子記号を文字列変数として返す "Select Case" [Visual Basic] または "switch" [C#] 文を作成します。
``` vb
Select Case selectOperatorList.SelectedIndex
Case CeComparisonOperator.EqualTo
return "="
Case CeComparisonOperator.LessThan
return "<"
Case CeComparisonOperator.GreaterThan
return ">"
Case CeComparisonOperator.LessThan_or_EqualTo
return "<="
Case CeComparisonOperator.GreaterThan_or_EqualTo
return ">="
Case CeComparisonOperator.Not_EqualTo
return "<>"
Case Else
return "="
End Select
```
``` csharp
switch ((CeComparisonOperator)selectOperatorList.SelectedIndex)
{
case CeComparisonOperator.EqualTo:
return "=";
case CeComparisonOperator.LessThan:
return "<";
case CeComparisonOperator.GreaterThan:
return ">";
case CeComparisonOperator.LessThan_or_EqualTo:
return "<=";
case CeComparisonOperator.GreaterThan_or_EqualTo:
return ">=";
case CeComparisonOperator.Not_EqualTo:
return "<>";
default:
return "=";
}
```
SelectionFormula プロパティに割り当てられている Customer Name の比較演算子を変更する
redisplay_Click() イベント メソッドでは、“より大きい”記号(“>”)が[顧客名]フィールドの選択に現在使用されています。次に、この記号を、DropDownList コントロールで選択した比較演算子に変更する方法を学習します。選択した記号は、GetSelectedCompareOperator() ヘルパー メソッドを呼び出すと、文字列として返されます。
redisplay_Click() イベント メソッドの先頭で、GetSelectedCompareOperator() ヘルパー メソッドを呼び出し、その結果を文字列変数に割り当てます。
Dim mySelectedOperator As String = GetSelectedCompareOperator()
string selectedOperator = GetSelectedCompareOperator();
選択式の文字列変数用に、“より大きい”記号(“>”)を選択した演算子の文字列と置き換えます。
Dim mySelectFormula As String = "{Customer.Last Year's Sales} > " & lastYearsSales.Text _ & " AND Mid({Customer.Customer Name}, 1) " & mySelectedOperator & " """ & customerName.Text & """"
string selectFormula = "{Customer.Last Year's Sales} > " + lastYearsSales.Text + " AND Mid({Customer.Customer Name}, 1) " + selectedOperator + " \"" + customerName.Text + "\"";
CustomersBySalesName レポートの選択式をテストする
“前年度取引高”フィールドおよび“顧客名”フィールドに入力した値によって変更される選択式が作成されました。
これで、選択式のビルドとテストができます。
[ビルド]メニューの[ソリューションのビルド]をクリックします。
ビルド エラーが発生した場合は、ここで修正します。
[デバッグ]メニューの[開始]をクリックします。
- [LastYearsSales] TextBox に「40000」と入力します。
- [customerName] TextBox に「Athens bicycle Co.」と入力します。
- DropDownList で、“LessThan”を選択します。
- [レポートの再表示]をクリックします。
Crystal レポートは、Alley Cat Cycles と Ankara Bicycle Company の 2 つの顧客レコードを表示します。
Visual Studio に戻り、[停止]ボタンをクリックして、デバッグ モードを終了します。