【セル型】セルに検証コントロールを設定したい
対象製品
SPREAD for .NET 2.5J Web Forms Edition
詳細
通貨、整数、倍精度、マスク型セルでは入力値の検証に.NET Frameworkで提供される検証コントロールを使用しています。製品ではこれらのセル型を使用する以外に、カスタムセルを作成してセルに検証コントロールを設定することができます。
  
メモ
下記サンプルコートです。
※サンプルコードでは.NET Frameworkで提供されるCustomValidatorを設定し、列毎に異なる入力検証処理を行います。
【VB サンプルコード】
【C# サンプルコード】
  

- 既存クラスの継承は.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>
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 サンプルコード」に掲載したものと同様です。
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