【セル型】日付型セルではクライアントサイドでチェックが行われない

文書番号 : 21790     文書種別 : 使用方法     最終更新日 : 2006/06/23
文書を印刷する
対象製品
SPREAD for .NET 2.5J Web Forms Edition
詳細
SPREADでは日付データの妥当性をサーバー側でチェックします。チェックを行うためにはサーバー側にポストバックする必要があります。

クライアントサイドでチェックを行いたい場合、日付型を継承するカスタム日付型を作成することで対応できます。

  メモメモ
  • 既存クラスの継承は.NETアプリケーション開発における一般的な手法です。継承方法の詳細についてはMSDNライブラリをご参照ください。(既存クラスのカスタマイズ方法については弊社サポートサービス対象外となります)

下記サンプルコードです。
この方法ではHTCファイルという外部ファイルにクライアントスクリプトを記述します。日本語のメッセージを送受信するために、このファイルのエンコーディングをweb.configで設定するグローバリゼーションのエンコーディング設定(デフォルトはUTF-8)に合わせる必要があります。

【VB サンプルコード】
--------------------------------------------------
       Webフォームクラス
--------------------------------------------------
  Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    ' ページを初期化するユーザー コードをここに挿入します。
    If (IsPostBack) Then
      Return
    End If

    ' [日付]列を日付型に設定します。
    Dim objDateCell As New MyDateType
    FpSpread1.Sheets(0).Columns(1).CellType = objDateCell   

  End Sub

--------------------------------------------------
       カスタム日付型
--------------------------------------------------
Imports FarPoint.Web.Spread

<Serializable()> Public Class MyDateType
  Inherits DateTimeCellType

  Public Overrides ReadOnly Property EditorClientScriptUrl() As String
    Get
      Return "mydateeditor.htc"
    End Get
  End Property

End Class

--------------------------------------------------------
        mydateeditor.htc
--------------------------------------------------------
<PUBLIC:COMPONENT>
 <PUBLIC:METHOD NAME="isValid">
 </PUBLIC:METHOD>
</PUBLIC:COMPONENT>
<SCRIPT language="javascript">
 function isValid(val) {
   if(val==""||val==null)
  return "";
   if(!isDate(val))
    return "日付(ex.2003/12/31)を入力して下さい。";
   else
    return "";
 }
 function isDate(dateStr) {
  //希望の書式を設定してください
  var datePat = /^¥(d{4})(¥/¥|¥-)(¥d{1,2})(¥/¥|¥-)(¥d{1,2})$/;
  var matchArray = dateStr.match(datePat) ;
  if (matchArray==null|| matchArray == "")
   return false;
  else
   return true;
  }
</SCRIPT>
関連情報
キーワード
クライアント側スクリプト セル型

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