フィルタを有効にしコールバック処理でSPREADを操作すると、クライアント側のIEのメモリ使用量が増大する

文書番号 : 38371     文書種別 : 不具合     登録日 : 2015/05/20     最終更新日 : 2015/06/02
文書を印刷する
対象製品
SPREAD for ASP.NET 8.0J
状況
修正済み
詳細
フィルタを有効にしコールバック処理でSPREADを操作すると、クライアント側のIEのメモリ使用量が増大します。

【再現コード】
  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Page.IsPostBack Then Return

    ' データの作成
    Dim dt As New Data.DataTable("TEST")
    For i As Integer = 0 To 99
      dt.Columns.Add(String.Format("列{0:00}", i), GetType(String))
    Next
    For i As Integer = 0 To 999
      Dim dr As Data.DataRow = dt.NewRow()
      For j As Integer = 0 To 99
        dr(j) = String.Format("R{0}C{1}", i, j)
      Next
      dt.Rows.Add(dr)
    Next
    dt.AcceptChanges()

    ' SPREADの設定
    FpSpread1.ActiveSheetView.ColumnCount = 101
    FpSpread1.ActiveSheetView.Columns(0).CellType = New FarPoint.Web.Spread.CheckBoxCellType()
    For i As Integer = 1 To FpSpread1.ActiveSheetView.ColumnCount - 1
      FpSpread1.ActiveSheetView.Columns(i).DataField = dt.Columns(i - 1).ColumnName
    Next
    FpSpread1.ActiveSheetView.AutoGenerateColumns = False
    FpSpread1.ActiveSheetView.DataAutoCellTypes = False
    FpSpread1.ActiveSheetView.DataSource = dt
    FpSpread1.ActiveSheetView.PageSize = 50

    FpSpread1.ActiveSheetView.AutoFilterMode = FarPoint.Web.Spread.AutoFilterMode.FilterBar

    ' チェックボックスの設定
    CheckBox1.AutoPostBack = True
  End Sub

  Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
    ' チェックボックス型セルの値設定
    Dim check As Boolean = CheckBox1.Checked
    For i As Integer = 0 To FpSpread1.ActiveSheetView.RowCount - 1
      FpSpread1.ActiveSheetView.SetValue(i, 0, check)
    Next
  End Sub

【再現手順】
1.新規WebフォームにScriptManagerとUpdatePanelを配置します
2.UpdatePanel内にCheckBoxとSPREADコントロールを配置します
3.サンプルコードを貼り付けプロジェクトを実行します
4.CheckBoxをチェックします
 -- SPREADの1列目がチェックされます
5.CheckBoxのチェックを外します
 -- SPREADの1列目のチェックが外れます
6.手順4~5を4回繰り返します

Internet Explorer 8でのメモリ使用量の推移
・フィルタあり
表示時 : 51M
1回目 : 81M
2回目 :103M
3回目 :124M
4回目 :136M

・フィルタなし
表示時 : 40M
1回目 : 53M
2回目 : 60M
3回目 : 66M
4回目 : 70M
回避方法
Service Pack 1(v8.0.4001.2010)で修正済み。なお、フィルタ用のhtmlオブジェクトが出力される制約上、本不具合を修正したService Pack 1(v8.0.4001.2010)でも一定レベルでのメモリ上昇は避けられません。この動作は製品の制限事項となります。

Service Pack 1(IE8)でのメモリ使用量の推移
・フィルタあり
表示時 :48M
1回目 :77M
2回目 :82M
3回目 :87M
3回目 :91M

Service Pack 1(v8.0.4001.2010)より前のバージョンでは次の回避方法が有効です。
------------------------------------------

UpdatePanelを使用せずにポストバックでシートの値を変更します。