ASP.NET 検証コントールのホームへ戻る

CompareValidatorの使い方

 

   CompareValidatorをテストするサンプル

 

CompareValidatorをテストするサンプル

 

このサンプルでは、CompareValidatorコントロールをテストします。ControlToValidateTextBoxには、比較元のデータを入力します。ControlToCompareTextBoxには、比較先のデータを入力します。OperatorDropDownListからは、比較演算子を選択します。DropDownListからDataTypeCheckを選択したときは、データ型をチェックします。この場合、ControlToCompareは不要ですから入力する必要ありません。TypeDropDownListからは、データ型を選択します。

 

テストボタンをクリックすると、ControlToValidateControlToCompareOperatorで選択した条件で比較します。比較条件が満足しないときは、エラーメッセージを表示します。

 

このサンプルでは、以下のノウハウを習得することができます。

 

  CompareValidatorコントロールの使い方

  CompareValidator Operatorプロパティをランタイム時に設定する方法

  CompareValidatorTypeプロパティをランタイム時に設定する方法

  CompareValidator Validate()メソッドの使い方

  PageクラスのIsValidプロパティの使い方

 

サンプルの行55では、ControlToValidateTextBoxを定義しています。ContorlToValidateには、比較元データを入力します。

 

55:     <asp:TextBox id="txtToValidate" runat="server" />

 

63では、ControlToCompareTextBoxを定義しています。ControlToCompareには、比較先データを入力します。

 

63:     <asp:TextBox id="txtToCompare" runat="server" />

 

71-74では、Operator(比較演算子)のDropDownListを定義しています。行73では、AutoPostBackプロパティにTrueを設定してDropDownListからアイテムを選択したときにポストバックされるようにしています。行74では、OnSelectedIndexChangedイベントを登録しています。このイベントでは、DropDownListからDataTypeCheckのアイテムが選択されたか調べて、ControlToCompareTextBoxを無効とします。DropDownListListItemは、ランタイム時に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()イベントでは、CompareValidatorValidate()メソッドでエラーチェックして結果を表示しています。行93-98では、CompareValidatorを定義しています。行94では、EnableClientScriptプロパティにFalseを設定してWebサーバ側にてエラーチェックするようにしています。エラーチェックは、テストボタンのOnClick()イベントで行います。行95では、ControlToValidateプロパティにControlToValidateTextBoxIDを設定しています。行96では、ControlToCompareプロパティにControlToCompareTextBoxIDを設定しています。行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()イベントでは、ページがポストバックされたときにCompareValidatorOperatorTypeプロパティを設定しています。プロパティに設定する値は、DropDownListSelectedItem.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()イベントでは、CompareValidatorValidate()メソッドでエラーチェックしています。PageクラスのIsValidプロパティでエラーの有無を調べて、エラーが無いときはLabelTextプロパティに「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

ASP.NET 検証コントールのホームへ戻る