次の方法で共有


DropDownList コントロールを使用した選択式の変更

このセクションでは、DropDownList コントロールに比較演算子を付けて値を入力します。比較演算子を含む列挙を作成します。

DropDownList コントロールでは、TextBox コントロールに入力したテキストと同じか、それより少ないか、それより大きいか、それ以下か、それ以上か、またはそれと等しくない顧客名を表示するように選択します。

redisplay_Click() イベント メソッドでは、CrystalReportViewer コントロールの SelectionFormula プロパティに現在割り当てられている文字列を変更します。

CeComparisonOperator 列挙を作成する

  1. ソリューション エクスプローラで太字のプロジェクト名を右クリックし、[追加]をポイントして[新しい項目の追加]をクリックします。

  2. [新しい項目の追加]ダイアログ ボックスで、[テンプレート]ビューから[クラス]を選択します。

  3. [名前]フィールドに「CeComparisonOperator」と入力し、[追加]をクリックします。

    Note

    このクラスを Code ディレクトリに配置するように求められる場合があります。[はい]ボタンをクリックします。

  4. クラス署名で、ワード クラスを列挙に変更して、クラスを列挙に変換します。

    C# Windows プロジェクトでは、名前空間をプロジェクトの名前に変更することも必要です。

    Note

    Visual Basic では、クラスの開始署名と終了署名の両方を列挙に変更してください。

  5. 列挙はコンストラクタを持たないので、C# バージョンのコードで提供されているデフォルトの constructor メソッドを削除します。

  6. 列挙内に次の値を入力します。

    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 コントロールにバインドする方法について説明します。次の手順のいずれかを完了します。

  1. Web フォームを開きます。

  2. [表示]メニューの[コード]をクリックします。

  3. ConfigureCrystalReports() メソッドの Not IsPostBack 条件ブロック内で、選択式の文字列の宣言の前に、DropDownList コントロールの DataSource プロパティを CeComparisonOperator 列挙の値に設定します。

    selectOperatorList.DataSource =
    System.Enum.GetValues(GetType(CeComparisonOperator))
    
    selectOperatorList.DataSource =
    System.Enum.GetValues(typeof(CeComparisonOperator));
    
  4. ここで、SelectOperatorList DropDownList の DataBind() メソッドを呼び出して、値をコントロールにバインドします。

``` vb
selectOperatorList.DataBind()
```

``` csharp
selectOperatorList.DataBind();
```

Windows プロジェクトで CeComparisonOperator 列挙から DropDownList コントロールに値を入力する

  1. Windows フォームを開きます。

  2. [表示]メニューの[コード]をクリックします。

  3. ConfigureCrystalReports() メソッド内で、選択式の文字列の宣言の前に SelectOperatorListComboBox の DataSource プロパティを CeComparisonOperator 列挙の値に設定します。

    selectOperatorList.DataSource =
    System.Enum.GetValues(GetType(CeComparisonOperator))
    
    selectOperatorList.DataSource =
    System.Enum.GetValues(typeof(CeComparisonOperator));
    

GetSelectedCompareOperator() ヘルパー メソッドを作成する

次に、GetSelectedCompareOperator() ヘルパー メソッドを作成して、選択したインデックスを、比較演算子記号を表す文字列として返します。

  1. クラスの最後に、文字列変数を返すプライベート ヘルパー メソッド GetSelectedCompareOperator() を作成します。
``` vb
Private Function GetSelectedCompareOperator() As String

End Function
```

``` csharp
private string GetSelectedCompareOperator()
{
}
```
  1. メソッド内で、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() ヘルパー メソッドを呼び出すと、文字列として返されます。

  1. redisplay_Click() イベント メソッドの先頭で、GetSelectedCompareOperator() ヘルパー メソッドを呼び出し、その結果を文字列変数に割り当てます。

    Dim mySelectedOperator As String = GetSelectedCompareOperator()
    
    string selectedOperator = GetSelectedCompareOperator();
    
  2. 選択式の文字列変数用に、“より大きい”記号(“>”)を選択した演算子の文字列と置き換えます。

    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 レポートの選択式をテストする

“前年度取引高”フィールドおよび“顧客名”フィールドに入力した値によって変更される選択式が作成されました。

これで、選択式のビルドとテストができます。

  1. [ビルド]メニューの[ソリューションのビルド]をクリックします。

  2. ビルド エラーが発生した場合は、ここで修正します。

  3. [デバッグ]メニューの[開始]をクリックします。

    1. [LastYearsSales] TextBox に「40000」と入力します。
    2. [customerName] TextBox に「Athens bicycle Co.」と入力します。
    3. DropDownList で、“LessThan”を選択します。
    4. [レポートの再表示]をクリックします。

    Crystal レポートは、Alley Cat Cycles と Ankara Bicycle Company の 2 つの顧客レコードを表示します。

  4. Visual Studio に戻り、[停止]ボタンをクリックして、デバッグ モードを終了します。