【セル型】 cookieless=true 設定下でカスタムセル型が正しく動作しない
対象製品
SPREAD for .NET 2.5J Web Forms Edition
詳細
既存のセル型クラスを継承するカスタムセル型クラスを作成し、クライアント側動作をHTCファイルにて実装している場合、アプリケーションのセッション状態としてcookieless を true に設定すると HTC ファイルが正しく実行されない可能性があります。
HTC ファイルは実行時に Cookie に保存されます。
そのためアプリケーションの Web.config にて cookieless=true を指定すると アプリケーションはCookie を使用せず HTC ファイルがクライアント側に保存されません。この場合アプリケーションはHTCファイルを参照できず、クライアント側動作が正しく実行されないという次第です。
製品が提供する fpspread.htc ファイルはこのような現象を回避するため IIS 上に作成された仮想ディレクトリに保存されています。この場合、個別のアプリケーションで設定した cookielessの値に依存せず正しく動作します。
もしアプリケーションのセッション状態として cookieless=true に設定する場合はHTC ファイルをアプリケーションの設定に依存しない別のディレクトリに保存し、そのディレクトリを IIS の仮想ディレクトリとして設定、ファイルの参照先についてカスタムセル型クラスの内容を書き換えて下さい。
例えばカスタムセル型クラスにて次の2つのHTCファイルを使用しているとします。これらを製品にて提供される fpspread.htc と同じ場所に保存します。
- mydoublerender.htc
- mydoubleeditor.htc
保存先:
<Program Files Folder>¥Common Files¥FarPoint Technologies¥SpreadNETWebv25¥fp_client¥fpspread¥2_5_1004_2002¥htc
(VS2005をご利用の場合:<Program Files Folder>¥Common Files¥FarPoint Technologies¥SpreadNETWebv25¥fp_client¥fpspread¥2_5_2004_2005¥htc)
その上でカスタムセル型クラスを次のように変更します。
【修正箇所】
- PaintCellメソッド
- EditorClientScriptUrlプロパティ
【修正内容】
HTC ファイルは実行時に Cookie に保存されます。
そのためアプリケーションの Web.config にて cookieless=true を指定すると アプリケーションはCookie を使用せず HTC ファイルがクライアント側に保存されません。この場合アプリケーションはHTCファイルを参照できず、クライアント側動作が正しく実行されないという次第です。
製品が提供する fpspread.htc ファイルはこのような現象を回避するため IIS 上に作成された仮想ディレクトリに保存されています。この場合、個別のアプリケーションで設定した cookielessの値に依存せず正しく動作します。
もしアプリケーションのセッション状態として cookieless=true に設定する場合はHTC ファイルをアプリケーションの設定に依存しない別のディレクトリに保存し、そのディレクトリを IIS の仮想ディレクトリとして設定、ファイルの参照先についてカスタムセル型クラスの内容を書き換えて下さい。
例えばカスタムセル型クラスにて次の2つのHTCファイルを使用しているとします。これらを製品にて提供される fpspread.htc と同じ場所に保存します。
- mydoublerender.htc
- mydoubleeditor.htc
保存先:
<Program Files Folder>¥Common Files¥FarPoint Technologies¥SpreadNETWebv25¥fp_client¥fpspread¥2_5_1004_2002¥htc
(VS2005をご利用の場合:<Program Files Folder>¥Common Files¥FarPoint Technologies¥SpreadNETWebv25¥fp_client¥fpspread¥2_5_2004_2005¥htc)
その上でカスタムセル型クラスを次のように変更します。
【修正箇所】
- PaintCellメソッド
- EditorClientScriptUrlプロパティ
【修正内容】
''PaintCellメソッド
Public Overrides Function PaintCell(ByVal id As String, _
ByVal parent As TableCell, _
ByVal style As Appearance, _
ByVal margin As Inset, _
ByVal val As Object, _
ByVal upperLevel As Boolean) As Control
If upperLevel Then
parent.Attributes.CssStyle.Add("behavior", "url(" + parent.ResolveUrl("/fp_client/fpspread/2_5_1004_2002/htc/mydoublerender.htc") + ")")
End If
Return MyBase.PaintCell(id, parent, style, margin, val, upperLevel)
End Function
''EditorClientScriptUrlプロパティ
Public Overrides ReadOnly Property EditorClientScriptUrl() As String
Get
Return "/fp_client/fpspread/2_5_1004_2002/htc/mydoubleeditor.htc"
''VS2005をご利用の場合は↑をコメントし、↓のコメントを外してください。
''Return "/fp_client/fpspread/2_5_2004_2005/htc/mydoubleeditor.htc"
End Get
End Property
Public Overrides Function PaintCell(ByVal id As String, _
ByVal parent As TableCell, _
ByVal style As Appearance, _
ByVal margin As Inset, _
ByVal val As Object, _
ByVal upperLevel As Boolean) As Control
If upperLevel Then
parent.Attributes.CssStyle.Add("behavior", "url(" + parent.ResolveUrl("/fp_client/fpspread/2_5_1004_2002/htc/mydoublerender.htc") + ")")
End If
Return MyBase.PaintCell(id, parent, style, margin, val, upperLevel)
End Function
''EditorClientScriptUrlプロパティ
Public Overrides ReadOnly Property EditorClientScriptUrl() As String
Get
Return "/fp_client/fpspread/2_5_1004_2002/htc/mydoubleeditor.htc"
''VS2005をご利用の場合は↑をコメントし、↓のコメントを外してください。
''Return "/fp_client/fpspread/2_5_2004_2005/htc/mydoubleeditor.htc"
End Get
End Property
キーワード
セル型 一般
この文書は、以前は次のFAQ IDで公開されていました : 9159