[SPRN06568]【セル型】コールバックすると、GetValidator メソッドをオーバーライドしたカスタムセル型のデータ検証が動作しない

文書番号 : 25220     文書種別 : 制限事項     最終更新日 : 2007/12/27
文書を印刷する
対象製品
SPREAD for .NET 2.5J Web Forms Edition
発生環境
この現象は、Visual Studio 2005を使用した開発環境で発生します
詳細
ページングなど、コールバックを行うとGetValidator メソッドをオーバーライドしたカスタムセル型のデータ検証が動作しない場合があります。

【再現手順】
1.新規WebフォームにSPREADを配置し、下記コードをコピーします
2.アプリケーションを実行します
3.ページナビゲーションボタンを押下してページングします
4.1列目のカスタムセル型の検証が行われません

【サンプルコード】
-------------------------
Webフォームクラス
-------------------------
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  If Page.IsPostBack Then
    Return
  End If

  Dim vc As MyCustomValidate = New MyCustomValidate
  vc.ErrorMessage = "エラー111"
  vc.ClientValidationFunction = "errfunc1"
  FpSpread1.Sheets(0).Columns(0).CellType = vc
  FpSpread1.Sheets(0).RowCount = 30
End Sub

-------------------------
カスタムセル型クラス
-------------------------
<Serializable()> Public Class MyCustomValidate
  Inherits FarPoint.Web.Spread.GeneralCellType
  Implements FarPoint.Web.Spread.Model.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

-------------------------
クライアント側スクリプト
-------------------------
<script type="text/javascript">
  function errfunc1(src,arg)
  {
    //「ok」という文字列以外はエラー(1列目)
    if(arg.Value=="ok")
      arg.IsValid=true;
    else
      arg.IsValid=false;
  }
</script>
回避方法
入力検証を行うカスタムセル型クラスを作成する場合は、こちらの製品FAQに記載されている方法をご検討ください。

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