CompareValidatorコントロール
CompareValidatorは、TextBoxなどに入力したデータの値を比較するときに使用します。たとえば、開始日/終了日を入力させるとき、終了日>開始日の条件をチェックすることができます。フォームから入力した値と比較するには、ControlToCompareプロパティを使用します。固定値と比較するには、ValueToCompareプロパティを使用します。
書式:
<mobile:CompareValidator id=”String” runat=”server”
ControlToCompare=”String”
ControlToValidate=”String”
Display=”{None|Static|Dynamic}”
ErrorMessage=”String”
Operator=”{DataTypeCheck|Equal|GreaterThan|GreaterThanEqual|LessThan|
LessThanEqual|NotEqual}”
Text=”String”
Type=”{Currency|DateTime|Double|Integer|String}”
ValueToCompare=”String”>
</mobile:CompareValidator>
● CompareValidatorをテストするサンプル


図 CompareValidatorコントロールのサンプル
このサンプルでは、CompareValidatorをテストします。ToValidateのTextBoxには、比較元のデータを入力します。ToCompareのTextBoxには、比較先のデータを入力します。OpratorのSelectionListからは、比較演算子を選択します。TypeのSelectionListからは、データ型を選択します。テストボタンを選択するとテスト結果が表示されます。
行44、48では、ToValidate/ToCompareのTextBoxを定義しています。行52-54では、OperatorのSelectionListを定義しています。行58-59では、TypeのSelectionListを定義しています。Operator/TypeのSelectionListに表示するアイテムは、ランタイム時に追加します。
行60-65では、CompareValidatorを定義しています。行62では、ControlToCompareプロパティにToCompareのTextBoxのIDを設定しています。行63では、ControlToValidateプロパティにToValidateのTextBoxのIDを設定しています。これでToValidate/ToCompareのTextBoxにCompareValidatorが適用されます。
44: <mobile:TextBox id="txtToValidate" runat="server"
/>
48: <mobile:TextBox
id="txtToCompare" runat="server" />
52: <mobile:SelectionList
id="slstOperator" runat="server"
53: StyleReference="List"
54: SelectType="DropDown" />
58: <mobile:SelectionList
id="slstType" runat="server"
59: SelectType="DropDown" />
60: <mobile:CompareValidator id="valCompare"
runat="server"
61: StyleReference="Validator"
62: ControlToCompare="txtToCompare"
63: ControlToValidate="txtToValidate"
64: Display="Dynamic"
65: ErrorMessage="テストデータが不正です!" />
Page_Loadイベントでは、ページが最初にロードされたときにSub FillListWithEnum()を呼び出してOperatorとTypeのSelectionListにアイテムを追加します。
8: Sub Page_Load()
9: If Not IsPostBack Then
10:
FillListWithEnum(slstOperator, GetType(ValidationCompareOperator))
11:
FillListWithEnum(slstType, GetType(ValidationDataType))
12: End If
13: End Sub
テストボタンを選択すると、フォームがポストバックされてCommandのOnClickイベントに制御が渡ります。このイベントの行16-17では、OperatorのSelectionListから選択したアイテム(MobileListItem)のValueプロパティから比較演算子を取得して、CompareValidatorのOperatorプロパティに設定しています。
行18-19では、TypeのSelectionListから選択したアイテム(MobileListItem)のValueプロパティからデータ型を取得して、CompareValidatorのTypeプロパティに設定しています。
行20では、CompareValidatorのValidate()メソッドでTextBoxに入力したテストデータを診断しています。行21-23では、MobilePageクラスのIsValidプロパティを参照して診断結果を調べています。エラーがないときは、ActiveFormプロパティにfrmResultフォームを設定して「OK!」を表示します。エラーを検出したときは、カレントページにエラーメッセージが表示されます。
15: Sub cmdTest_Click(s As Object, e As EventArgs)
16: valCompare.Operator = _
17:
CType(slstOperator.Selection.Value, ValidationCompareOperator)
18: valCompare.Type = _
19:
CType(slstType.Selection.Value, ValidationDataType)
20: valCompare.Validate()
21: If IsValid Then
22: ActiveForm = frmResult
23: End If
24: End Sub