【セル型】セルに検証コントロールを設定したい

文書番号 : 22294     文書種別 : 使用方法     最終更新日 : 2006/07/27
文書を印刷する
対象製品
SPREAD for .NET 2.5J Web Forms Edition
詳細
通貨、整数、倍精度、マスク型セルでは入力値の検証に.NET Frameworkで提供される検証コントロールを使用しています。製品ではこれらのセル型を使用する以外に、カスタムセルを作成してセルに検証コントロールを設定することができます。

  メモメモ
  • 既存クラスの継承は.NETアプリケーション開発における一般的な手法です。継承方法の詳細についてはMSDNライブラリをご参照ください。(既存クラスのカスタマイズ方法については弊社サポートサービス対象外となります)
  • この方法では、コールバック後に入力検証が行われません。この場合は下記「関連するFAQ(【セル型】独自の入力検証を行いたい)」もご検討ください

下記サンプルコートです。
※サンプルコードでは.NET Frameworkで提供されるCustomValidatorを設定し、列毎に異なる入力検証処理を行います。

【VB サンプルコード】
------------------------
 WebForm1.aspx.vb
------------------------
  Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    If IsPostBack Then Return

    Dim vc As MyCustomValidate

    With FpSpread1.Sheets(0)
      '1列目にカスタムセルを設定
      vc = New MyCustomValidate
      vc.ErrorMessage = "エラー111"
      vc.ClientValidationFunction = "errfunc1"
      .Columns(0).CellType = vc

      '2列目にカスタムセルを設定
      vc = New MyCustomValidate
      vc.ErrorMessage = "エラー222"
      vc.ClientValidationFunction = "errfunc2"
      .Columns(1).CellType = vc

    End With
  End Sub
------------------------
 MyCustomValidate.vb
------------------------
Imports FarPoint.Web.Spread
Imports FarPoint.Web.Spread.Model

<Serializable()> Public Class MyCustomValidate
  Inherits GeneralCellType
  Implements ICanSerializeXml

  Private _clientfunc As String
  '検証に使用するクライアント側スクリプト関数名を取得または設定します
  Public Property ClientValidationFunction() As String
    Get
      Return _clientfunc
    End Get
    Set(ByVal value As String)
      _clientfunc = value
    End Set
  End Property
  '検証コントロールとしてCustomValidatorを使用します
  Public Overrides Function GetValidator() As System.Web.UI.WebControls.BaseValidator
    Dim cv As New CustomValidator
    cv.ClientValidationFunction = _clientfunc
    cv.ErrorMessage = Me.ErrorMessage
    Return cv
  End Function
  'カスタムセルでプロパティを追加する時(今回はClientValidationFunction)に必要です
  Public ReadOnly Property CanSerializeXml() As Boolean Implements FarPoint.Web.Spread.Model.ICanSerializeXml.CanSerializeXml
    Get
      Return False
    End Get
  End Property
End Class
-----------------------------------------------
 javascript
 ※WebForm1.aspx のHTMLソースに記述して下さい。
-----------------------------------------------
  <script type="text/javascript">
    function errfunc1(src,arg){
       //「ok」という文字列以外はエラー(1列目)
       if(arg.Value=="ok")
        arg.IsValid=true;
      else
        arg.IsValid=false;  
    }
    function errfunc2(src,arg){
       //「ok2」という文字列以外はエラー(2列目)
      if(arg.Value=="ok2")
        arg.IsValid=true;
      else
        arg.IsValid=false;   
    }
  </script>

【C# サンプルコード】
------------------------
 WebForm1.aspx.cs
------------------------
    private void Page_Load(object sender, System.EventArgs e)
    {
      if(IsPostBack)return;

      MyCustomValidate vc;

      SheetView sheet=FpSpread1.Sheets[0];
      //1列目にカスタムセルを設定
      vc=new MyCustomValidate();
      vc.ErrorMessage="エラー111";
      vc.ClientValidationFunction="errfunc1";
      sheet.Columns[0].CellType=vc;

      //2列目にカスタムセルを設定
      vc=new MyCustomValidate();
      vc.ErrorMessage="エラー222";
      vc.ClientValidationFunction="errfunc2";
      sheet.Columns[1].CellType=vc;

    }
------------------------
 MyCustomValidate.cs
------------------------
  [Serializable()]public class MyCustomValidate:GeneralCellType,ICanSerializeXml
  {
    private string _clientfunc;
    //検証に使用するクライアント側スクリプト関数名を取得または設定します
    public string ClientValidationFunction
    {
      get{return _clientfunc;}
      set{_clientfunc=value;}
    }
    //検証コントロールとしてCustomValidatorを使用します
    public override BaseValidator GetValidator()
    {
      CustomValidator cv=new CustomValidator();
      cv.ClientValidationFunction=_clientfunc;
      cv.ErrorMessage=this.ErrorMessage;
      return cv;
    }
    //カスタムセルでプロパティを追加する時(今回はClientValidationFunction)に必要です
    public bool CanSerializeXml
    {
      get{return false;}
    }
  }
-----------------------------------------------
 javascript
 ※WebForm1.aspx のHTMLソースに記述して下さい。
-----------------------------------------------
「VB サンプルコード」に掲載したものと同様です。
関連情報
キーワード
HowTo クライアント側スクリプト セル型

この文書は、以前は次のFAQ IDで公開されていました : 9486