RangeValidatorコントロール
RangeValidatorは、TextBoxなどに入力した値の範囲(最小値/最大値)をチェックするときに使用します。RangeValidatorでは、Currency、DateTime、Double、Integer、Stringなどのデータ型の範囲をチェックすることができます。
書式:
<mobile:RangeValidator id=”String” runat=”server”
ControlToValidate=”String”
Display=”{None|Static|Dynamic}”
ErrorMessage=”String”
MinimumValue=”String”
MaximumValue=”String”
Text=”String”
Type=”{Currency|DateTime|Double|Integer|String}”>
</mobile:RangeValidator>
● RangeValidatorをテストするサンプル


図 RangeValidatorをテストするサンプル
このサンプルでは、RangeValidatorをテストします。MinimumValueのTextBoxには、最小値を入力します。MaximumValueのTextBoxには、最大値を入力します。TypeのSelectionList(DropDown)からは、データ型を選択します。ToValidateのTextBoxには、テストデータを入力します。テストボタンを選択すると、テストデータの最小値/最大値の範囲をチェックします。テストデータが範囲外のときは、エラーメッセージが表示されます。
サンプルの行43、47では、MinimumValue/MaximumValueのTextBoxを定義しています。行51-53では、TypeのSelectionListを定義しています。このSelectionListには、データ型がドロップダウンリストに表示されます。SelectionListに表示するアイテムは、ランタイム時に追加します。
43: <mobile:TextBox id="txtMinValue" runat="server" />
47: <mobile:TextBox
id="txtMaxValue" runat="server" />
51: <mobile:SelectionList
id="slstType" runat="server"
52: StyleReference="List"
53: SelectType="DropDown" />
行56では、ToValidateのTextBoxを定義しています。このTextBoxには、テストデータを入力します。行57-61では、RangeValidatorを定義しています。行59では、ControlToValidateプロパティにToValidateのTextBoxのIDを設定しています。これでToValidateのTextBoxに、RangeValidatorが適用されます。RangeValidatorのMinumumValue/MaximumValueプロパティは、ランタイム時に設定します。
56: <mobile:TextBox id="txtToValidate" runat="server"
/>
57: <mobile:RangeValidator id="valRange"
runat="server"
58: StyleReference="Validator"
59: ControlToValidate="txtToValidate"
60: Display="Dynamic"
61: ErrorMessage="テストデータの範囲が不正です!" />
Page_Loadイベントでは、ページが最初にロードされたときにSub FillListWithEnum()を呼び出してSelectionListにValidationDataTypeのEnumを追加します。
8: Sub Page_Load()
9: If Not IsPostBack Then
10:
FillListWithEnum(slstType, GetType(ValidationDataType))
11: End If
12: End Sub
テストボタンを選択すると、フォームがポストバックされてCommandのOnClickイベントに制御が渡ります。このイベントの行15-16では、TextBoxから最小値/最大値を取得してRangeValidatorのMinimumValue/MaximumValueプロパティに設定しています。行17-18では、TypeのSelectionListから選択したアイテム(MobileListItem)のValueプロパティからデータ型を取得して、RangeValidatorのTypeプロパティに設定しています。SelectionListには、次のようなアイテムが格納されています。
<Item Text=”String” Value=”0” />
<Item Text=”Integer” Value=”1” />
<Item Text=”Double” Vaue=”2” />
<Item Text=”Date” Vaue=”3” />
<Item Text=”Currency” Value=”4” />
行19では、RangeValidatorのValidate()メソッドでTextBoxに入力したテストデータを診断しています。行20-22では、MobilePageクラスのIsValidプロパティを参照して診断結果を調べています。エラーがないときは、ActiveFormプロパティにfrmResultのフォームIDを設定して「OK!」を表示します。エラーを検出したときは、カレントページにエラーメッセージが表示されます。
14: Sub cmdTest_Click(s As Object, e As EventArgs)
15: valRange.MinimumValue =
txtMinValue.Text.Trim()
16: valRange.MaximumValue =
txtMaxValue.Text.Trim()
17: valRange.Type = _
18:
CType(slstType.Selection.Value, ValidationDataType)
19: valRange.Validate()
20: If IsValid Then
21: ActiveForm = frmResult
22: End If
23: End Sub