CompareValidatorの使い方
● CompareValidatorをテストするサンプル

図 CompareValidatorをテストするサンプル
このサンプルでは、CompareValidatorコントロールをテストします。ControlToValidateのTextBoxには、比較元のデータを入力します。ControlToCompareのTextBoxには、比較先のデータを入力します。OperatorのDropDownListからは、比較演算子を選択します。DropDownListからDataTypeCheckを選択したときは、データ型をチェックします。この場合、ControlToCompareは不要ですから入力する必要ありません。TypeのDropDownListからは、データ型を選択します。
テストボタンをクリックすると、ControlToValidateとControlToCompareをOperatorで選択した条件で比較します。比較条件が満足しないときは、エラーメッセージを表示します。
このサンプルでは、以下のノウハウを習得することができます。
▲ CompareValidatorコントロールの使い方
▲ CompareValidator のOperatorプロパティをランタイム時に設定する方法
▲ CompareValidatorのTypeプロパティをランタイム時に設定する方法
▲ CompareValidator のValidate()メソッドの使い方
▲ PageクラスのIsValidプロパティの使い方
サンプルの行55では、ControlToValidateのTextBoxを定義しています。ContorlToValidateには、比較元データを入力します。
55: <asp:TextBox id="txtToValidate" runat="server" />
行63では、ControlToCompareのTextBoxを定義しています。ControlToCompareには、比較先データを入力します。
63: <asp:TextBox id="txtToCompare" runat="server" />
行71-74では、Operator(比較演算子)のDropDownListを定義しています。行73では、AutoPostBackプロパティにTrueを設定してDropDownListからアイテムを選択したときにポストバックされるようにしています。行74では、OnSelectedIndexChangedイベントを登録しています。このイベントでは、DropDownListからDataTypeCheckのアイテムが選択されたか調べて、ControlToCompareのTextBoxを無効とします。DropDownListのListItemは、ランタイム時にSub FillLIstWithEnum()を呼び出して設定します。
71: <asp:DropDownList id="dropValidationCompareOperator"
runat="server"
72:
Width="115px"
73:
AutoPostBack="True"
74:
OnSelectedIndexChanged="dropValidationCompareOperator_SelectedIndexChanged"
/>
行82-84では、Type(データ型)のDropDownListを定義しています。DropDownListに表示するListItemは、ランタイム時にSub FillLIstWithEnum()を呼び出して設定します。
82: <asp:DropDownList id="dropValidationDataType"
runat="server"
83:
Width="115px"
84:
AutoPostBack="False" />
行89-91では、テストボタンを定義しています。行90では、OnClick()イベントを登録しています。OnClick()イベントでは、CompareValidatorのValidate()メソッドでエラーチェックして結果を表示しています。行93-98では、CompareValidatorを定義しています。行94では、EnableClientScriptプロパティにFalseを設定してWebサーバ側にてエラーチェックするようにしています。エラーチェックは、テストボタンのOnClick()イベントで行います。行95では、ControlToValidateプロパティにControlToValidateのTextBoxのIDを設定しています。行96では、ControlToCompareプロパティにControlToCompareのTextBoxのIDを設定しています。行98では、Textプロパティにエラーメッセージを設定しています。
89: <asp:Button id="btnSubmit"
runat="server"
90:
OnClick="btnSubmit_Click"
91: Text="テスト" />
92: <asp:Label
id="lblMessage" runat="server" />
93: <asp:CompareValidator
id="valCompare" runat="server"
94:
EnableClientScript="False"
95:
ControlToValidate="txtToValidate"
96:
ControlToCompare="txtToCompare"
97: Display="Dynamic"
98: Text="<hr>NG - 比較条件が満足しません!" />
テストボタンをクリックすると、ページがポストバックされてPage_Load()イベント、OnClick()イベントの順に制御が渡ります。Page_Load()イベントでは、ページがポストバックされたときにCompareValidatorのOperatorとTypeプロパティを設定しています。プロパティに設定する値は、DropDownListのSelectedItem.Valueプロパティから取得します。SelectedItem.Valueには、プロパティの値が文字型で格納されていますのでCType()で変換します。
4: Sub Page_Load()
5: lblMessage.Text = String.Empty
6: If Not IsPostBack Then
7:
FillListWithEnum(dropValidationCompareOperator,
GetType(ValidationCompareOperator))
8:
FillListWithEnum(dropValidationDataType, GetType(ValidationDataType))
9: Else
10: valCompare.Operator =
CType(dropValidationCompareOperator.SelectedItem.Value,
ValidationCompareOperator)
11: valCompare.Type =
CType(dropValidationDataType.SelectedItem.Value, ValidationDataType)
12: End If
13: End Sub
テストボタンのOnClick()イベントでは、CompareValidatorのValidate()メソッドでエラーチェックしています。PageクラスのIsValidプロパティでエラーの有無を調べて、エラーが無いときはLabelのTextプロパティに「OK」を設定して表示します。
23: Sub btnSubmit_Click(s As Object, e As EventArgs)
24: valCompare.Validate()
25: If IsValid Then
26: lblMessage.Text =
"<hr>OK"
27: End If
28: End Sub