【クライアント】「ソート→印刷→行の追加」の操作で例外が発生する

文書番号 : 23259     文書種別 : 不具合     最終更新日 : 2006/12/09
文書を印刷する
対象製品
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();" />
回避方法
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
キーワード
SPRN05955

この文書は、以前は次のバグレポートIDで公開されていました : 6728