【セル型】日付型セルではクライアントサイドでチェックが行われない
対象製品
SPREAD for .NET 2.5J Web Forms Edition
詳細
SPREADでは日付データの妥当性をサーバー側でチェックします。チェックを行うためにはサーバー側にポストバックする必要があります。
クライアントサイドでチェックを行いたい場合、日付型を継承するカスタム日付型を作成することで対応できます。
メモ
下記サンプルコードです。
この方法ではHTCファイルという外部ファイルにクライアントスクリプトを記述します。日本語のメッセージを送受信するために、このファイルのエンコーディングをweb.configで設定するグローバリゼーションのエンコーディング設定(デフォルトはUTF-8)に合わせる必要があります。
【VB サンプルコード】
クライアントサイドでチェックを行いたい場合、日付型を継承するカスタム日付型を作成することで対応できます。

- 既存クラスの継承は.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>
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