Sessionを利用した状態管理でブラウザの[戻る]ボタンを押すとSPREADが正しく表示されない
対象製品
SPREAD for .NET 2.5J Web Forms Edition
詳細
Session変数で使用しているキーが問題を引き起こしている可能性が考えられます。
【VB サンプルコード】
上記のようにシート名をキーに使用した場合、もし複数のWebフォームでそれぞれSPREADを配置しSessionを利用した状態管理を行うと、同じキーで情報を格納することになります。そのためシートのステータスを異なるWebフォーム同士で上書きしてしまう可能性があります。
複数のWebフォームでそれぞれSPREADを配置しSession変数を使用した状態管理を行う場合、例えば次のようにWebフォームの名前とSPREADのシート名を組み合わせるなどしてユニークなキーを使用することで対応して下さい。
【VB サンプルコード】
【VB サンプルコード】
Session(e.SheetView.SheetName) = e.SheetView.SaveViewState()
上記のようにシート名をキーに使用した場合、もし複数のWebフォームでそれぞれSPREADを配置しSessionを利用した状態管理を行うと、同じキーで情報を格納することになります。そのためシートのステータスを異なるWebフォーム同士で上書きしてしまう可能性があります。
複数のWebフォームでそれぞれSPREADを配置しSession変数を使用した状態管理を行う場合、例えば次のようにWebフォームの名前とSPREADのシート名を組み合わせるなどしてユニークなキーを使用することで対応して下さい。
【VB サンプルコード】
Private Sub FpSpread1_SaveOrLoadSheetState(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SheetViewStateEventArgs) Handles FpSpread1.SaveOrLoadSheetState
''Webフォームの名前をキーに追加します
Dim strkey As String = "WebForm1" & e.SheetView.SheetName
If (e.IsSave) Then
Session(strkey) = e.SheetView.SaveViewState()
Else
e.SheetView.LoadViewState(Session(strkey))
End If
e.Handled = True
End Sub
''Webフォームの名前をキーに追加します
Dim strkey As String = "WebForm1" & e.SheetView.SheetName
If (e.IsSave) Then
Session(strkey) = e.SheetView.SaveViewState()
Else
e.SheetView.LoadViewState(Session(strkey))
End If
e.Handled = True
End Sub
キーワード
外観
この文書は、以前は次のFAQ IDで公開されていました : 9147