検証エクステンダはエラー通知だけではなく、エラー入力値をそのまま保持したりクリアしたりなど、どう扱うかを制御する機能も備えています。InputManの検証コントロールのリアルタイム検証と組み合わせることで、標準コントロールに対しても入力可能な文字以外をフィルタリングする機能を付与できます。ここでは、標準のTextBoxコントロールに数字以外は入力できないように設定しています。
using System; using GrapeCity.Web.Input.IMExtenders; public partial class Validate_ValueProcess : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { // 入力中に検証を行うかどうか設定します。 GcCharacterTypeValidator1.ValidateOnInput = CheckBox1.Checked; // 不正値の制御を設定します。 ValueProcess valueProcess1 = (ValueProcess)GcValidatorAction1.GetActions(GcCharacterTypeValidator1)[0]; valueProcess1.ValueProcessOption = (ValueProcessOption)DropDownList1.SelectedIndex; GcValidatorAction1.GetActions(GcCharacterTypeValidator1).Clear(); GcValidatorAction1.GetActions(GcCharacterTypeValidator1).Add(valueProcess1); } }
Imports GrapeCity.Web.Input.IMExtenders Partial Class Validate_ValueProcess Inherits System.Web.UI.Page Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click ' 入力中に検証を行うかどうか設定します。 GcCharacterTypeValidator1.ValidateOnInput = CheckBox1.Checked ' 不正値の制御を設定します。 Dim valueProcess1 As ValueProcess = GcValidatorAction1.GetActions(GcCharacterTypeValidator1)(0) valueProcess1.ValueProcessOption = DropDownList1.SelectedIndex GcValidatorAction1.GetActions(GcCharacterTypeValidator1).Clear() GcValidatorAction1.GetActions(GcCharacterTypeValidator1).Add(valueProcess1) End Sub End Class
<%@ page title="" language="C#" masterpagefile="~/MasterPage.master" autoeventwireup="true" inherits="Validate_ValueProcess, App_Web_rrwzlsxq" stylesheettheme="SkinFile" %> <%@ Register assembly="GrapeCity.Web.Input.v100, Version=10.0.4006.2012, Culture=neutral, PublicKeyToken=c3bd7c1dccef5128" namespace="GrapeCity.Web.Input.IMValidators" tagprefix="im_validator" %> <%@ Register assembly="GrapeCity.Web.Input.v100, Version=10.0.4006.2012, Culture=neutral, PublicKeyToken=c3bd7c1dccef5128" namespace="GrapeCity.Web.Input.IMExtenders" tagprefix="im_extenders" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> <script type="text/javascript"> function ProcessOption(option) { if (!document.getElementById("isClient").checked) return; var validatorAction = FindIMControl("<% =GcValidatorAction1.ClientID %>"); var valueProcess = validatorAction.GetValidateAction("<% =GcCharacterTypeValidator1.ClientID %>", 0); valueProcess.SetValueProcessOption(option); } function ValidateOnFocus(obj) { if (!document.getElementById("isClient").checked) return; FindIMControl("<% =GcCharacterTypeValidator1.ClientID %>").SetValidateOnInput(obj.checked); } </script> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> <div class="sample"> <table> <tr> <th>入力確認</th> </tr> <tr> <td><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br /> <im_validator:GcCharacterTypeValidator ID="GcCharacterTypeValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="数字以外は入力できません。" HasLoadFromXml="True" CharacterSet="99" ValidateOnInput="True" Display="Dynamic" ForeColor="Red"> </im_validator:GcCharacterTypeValidator> </td> </tr> </table> </div> <im_extenders:GcValidatorAction ID="GcValidatorAction1" runat="server"> <validateactionsitem type="ValueProcess" valueprocessoption = "Restore" controlid = "GcCharacterTypeValidator1" /> </im_extenders:GcValidatorAction> <label style="font-size:80%;"><input type="checkbox" id="isClient" checked="checked" /> クライアント側の設定を有効にする</label> <table class="inputTable"> <tr> <th class="inputTh">エラー値の制御</th> <td class="inputTd"> <asp:DropDownList ID="DropDownList1" runat="server" onchange="ProcessOption(this.value);"> <asp:ListItem Value="keep">入力された値を保持</asp:ListItem> <asp:ListItem Value="clear">値を消去</asp:ListItem> <asp:ListItem Value="restore" Selected="True">変更前の正しい値に戻す</asp:ListItem> </asp:DropDownList> </td> </tr> <tr> <th class="inputTh">入力中の検証</th> <td class="inputTd"> <asp:CheckBox ID="CheckBox1" runat="server" Checked="True" Text="入力中(フォーカス移動前)に検証を行う " onclick="ValidateOnFocus(this);"/></td> </tr> </table> <center> <asp:Button ID="Button1" runat="server" Text="設定" CssClass="setButton" onclick="Button1_Click" /> </center> </asp:Content>