【クライアント】「ソート→印刷→行の追加」の操作で例外が発生する
対象製品
SPREAD for .NET 2.5J Web Forms Edition
発生環境
動作保証環境と同様
状況
修正済み
詳細
クライアントで「ソート→印刷→行の追加」の操作を行うと例外が発生します。
※この現象は状態管理にセッションを使用した場合に確認されています。
[再現手順]
1.WebフォームにSPREAD1つ、webコントロールのButton2つ、HTMLのButton1つを配置します。
2.下記コードをコピーし実行します。
3.Button1をクリックしてソートします。
4.印刷ボタンより、印刷を行います。
5.Button2をクリックして行を追加します。
6.例外が発生します。
[再現コード]
------------------------------------
Webフォームクラス
------------------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
FpSpread1.ActiveSheetView.RowCount = 10
Dim r As Random = New Random(DateTime.Now.Hour * DateTime.Now.Minute * DateTime.Now.Second + DateTime.Now.Millisecond)
Dim i, j As Integer
For i = 0 To FpSpread1.ActiveSheetView.RowCount - 1
For j = 0 To FpSpread1.ActiveSheetView.ColumnCount - 1
' ランダムな数値データを設定
FpSpread1.ActiveSheetView.Cells(i, j).Value = r.Next(0, 100)
Next j
Next i
End If
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
' 第1キー:1列目/第2キー:2列目としたSortInfoオブジェクトを作成します
Dim si(1) As FarPoint.Web.Spread.SortInfo
si(0) = New FarPoint.Web.Spread.SortInfo(0, True)
si(1) = New FarPoint.Web.Spread.SortInfo(1, True)
' 作成済みソート条件を元に、全ての行を対象としたソートを実行します
FpSpread1.ActiveSheetView.SortRows(0, FpSpread1.ActiveSheetView.RowCount, si)
End Sub
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
FpSpread1.Rows.Add(0, 1)
End Sub
Protected Sub FpSpread1_SaveOrLoadSheetState(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SheetViewStateEventArgs) Handles FpSpread1.SaveOrLoadSheetState
If e.IsSave Then
Session("SPREAD_VIEW_STATE") = e.SheetView.SaveViewState
Else
e.SheetView.LoadViewState(Session("SPREAD_VIEW_STATE"))
End If
e.Handled = True
End Sub
------------------------------------
HTML
------------------------------------
・
<略>
・
<script language="javascript">
function spprint()
{
var spread = document.getElementById("FpSpread1");
spread.Print();
}
</script>
・
<略>
・
<input id="Button3" style="z-index: 103; left: 120px; position: absolute; top: 16px"
type="button" value="2.印刷" onclick="spprint();" />
※この現象は状態管理にセッションを使用した場合に確認されています。
[再現手順]
1.WebフォームにSPREAD1つ、webコントロールのButton2つ、HTMLのButton1つを配置します。
2.下記コードをコピーし実行します。
3.Button1をクリックしてソートします。
4.印刷ボタンより、印刷を行います。
5.Button2をクリックして行を追加します。
6.例外が発生します。
[再現コード]
------------------------------------
Webフォームクラス
------------------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
FpSpread1.ActiveSheetView.RowCount = 10
Dim r As Random = New Random(DateTime.Now.Hour * DateTime.Now.Minute * DateTime.Now.Second + DateTime.Now.Millisecond)
Dim i, j As Integer
For i = 0 To FpSpread1.ActiveSheetView.RowCount - 1
For j = 0 To FpSpread1.ActiveSheetView.ColumnCount - 1
' ランダムな数値データを設定
FpSpread1.ActiveSheetView.Cells(i, j).Value = r.Next(0, 100)
Next j
Next i
End If
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
' 第1キー:1列目/第2キー:2列目としたSortInfoオブジェクトを作成します
Dim si(1) As FarPoint.Web.Spread.SortInfo
si(0) = New FarPoint.Web.Spread.SortInfo(0, True)
si(1) = New FarPoint.Web.Spread.SortInfo(1, True)
' 作成済みソート条件を元に、全ての行を対象としたソートを実行します
FpSpread1.ActiveSheetView.SortRows(0, FpSpread1.ActiveSheetView.RowCount, si)
End Sub
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
FpSpread1.Rows.Add(0, 1)
End Sub
Protected Sub FpSpread1_SaveOrLoadSheetState(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SheetViewStateEventArgs) Handles FpSpread1.SaveOrLoadSheetState
If e.IsSave Then
Session("SPREAD_VIEW_STATE") = e.SheetView.SaveViewState
Else
e.SheetView.LoadViewState(Session("SPREAD_VIEW_STATE"))
End If
e.Handled = True
End Sub
------------------------------------
HTML
------------------------------------
・
<略>
・
<script language="javascript">
function spprint()
{
var spread = document.getElementById("FpSpread1");
spread.Print();
}
</script>
・
<略>
・
<input id="Button3" style="z-index: 103; left: 120px; position: absolute; top: 16px"
type="button" value="2.印刷" onclick="spprint();" />
回避方法
2007/09/05版で修正済み。
2007/09/05版より前のバージョンでは次の回避方法が有効です。
PrintSheet イベント内でビューステートを保存します。
------------------------------------
Webフォームクラス
------------------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
'FpSpread1.ActiveSheetView.PageSize = 30
FpSpread1.ActiveSheetView.RowCount = 10
Dim r As Random = New Random(DateTime.Now.Hour * DateTime.Now.Minute * DateTime.Now.Second + DateTime.Now.Millisecond)
Dim i, j As Integer
For i = 0 To FpSpread1.ActiveSheetView.RowCount - 1
For j = 0 To FpSpread1.ActiveSheetView.ColumnCount - 1
' ランダムな数値データを設定
FpSpread1.ActiveSheetView.Cells(i, j).Value = r.Next(0, 100)
Next j
Next i
End If
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
' 第1キー:1列目/第2キー:2列目としたSortInfoオブジェクトを作成します
Dim si(1) As FarPoint.Web.Spread.SortInfo
si(0) = New FarPoint.Web.Spread.SortInfo(0, True)
si(1) = New FarPoint.Web.Spread.SortInfo(1, True)
' 作成済みソート条件を元に、全ての行を対象としたソートを実行します
FpSpread1.ActiveSheetView.SortRows(0, FpSpread1.ActiveSheetView.RowCount, si)
End Sub
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
FpSpread1.Rows.Add(0, 1)
End Sub
Protected Sub FpSpread1_PrintSheet(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.PrintEventArgs) Handles FpSpread1.PrintSheet
Session("SPREAD_VIEW_STATE") = FpSpread1.Sheets(0).SaveViewState
End Sub
Protected Sub FpSpread1_SaveOrLoadSheetState(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SheetViewStateEventArgs) Handles FpSpread1.SaveOrLoadSheetState
If e.IsSave Then
Session("SPREAD_VIEW_STATE") = e.SheetView.SaveViewState
Else
e.SheetView.LoadViewState(Session("SPREAD_VIEW_STATE"))
End If
e.Handled = True
End Sub
2007/09/05版より前のバージョンでは次の回避方法が有効です。
PrintSheet イベント内でビューステートを保存します。
------------------------------------
Webフォームクラス
------------------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
'FpSpread1.ActiveSheetView.PageSize = 30
FpSpread1.ActiveSheetView.RowCount = 10
Dim r As Random = New Random(DateTime.Now.Hour * DateTime.Now.Minute * DateTime.Now.Second + DateTime.Now.Millisecond)
Dim i, j As Integer
For i = 0 To FpSpread1.ActiveSheetView.RowCount - 1
For j = 0 To FpSpread1.ActiveSheetView.ColumnCount - 1
' ランダムな数値データを設定
FpSpread1.ActiveSheetView.Cells(i, j).Value = r.Next(0, 100)
Next j
Next i
End If
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
' 第1キー:1列目/第2キー:2列目としたSortInfoオブジェクトを作成します
Dim si(1) As FarPoint.Web.Spread.SortInfo
si(0) = New FarPoint.Web.Spread.SortInfo(0, True)
si(1) = New FarPoint.Web.Spread.SortInfo(1, True)
' 作成済みソート条件を元に、全ての行を対象としたソートを実行します
FpSpread1.ActiveSheetView.SortRows(0, FpSpread1.ActiveSheetView.RowCount, si)
End Sub
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
FpSpread1.Rows.Add(0, 1)
End Sub
Protected Sub FpSpread1_PrintSheet(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.PrintEventArgs) Handles FpSpread1.PrintSheet
Session("SPREAD_VIEW_STATE") = FpSpread1.Sheets(0).SaveViewState
End Sub
Protected Sub FpSpread1_SaveOrLoadSheetState(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SheetViewStateEventArgs) Handles FpSpread1.SaveOrLoadSheetState
If e.IsSave Then
Session("SPREAD_VIEW_STATE") = e.SheetView.SaveViewState
Else
e.SheetView.LoadViewState(Session("SPREAD_VIEW_STATE"))
End If
e.Handled = True
End Sub
キーワード
SPRN05955
この文書は、以前は次のバグレポートIDで公開されていました : 6728