Internet Explorer 8/9で実行すると行選択、スクロールおよびソート動作が遅い

文書番号 : 39057     文書種別 : 不具合     登録日 : 2015/07/28     最終更新日 : 2015/10/08
文書を印刷する
対象製品
SPREAD for ASP.NET 8.0J
発生環境
Internet Explorer 8/9
状況
修正済み
詳細
Internet Explorer 8/9で実行すると行選択、スクロールおよびソート動作が遅くなります。この動作はOperationModeを行モードに設定した時に発生します。以下のサンプルコードでは、行の選択にかかる時間を計測しています。

------------------------------------
Webフォームクラス
------------------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  If Page.IsPostBack Then Return

  Page.Title = FpSpread1.About

  FpSpread1.ActiveSheetView.ColumnCount = 40
  FpSpread1.ActiveSheetView.RowCount = 100
  FpSpread1.ActiveSheetView.PageSize = 100
  FpSpread1.ActiveSheetView.OperationMode = FarPoint.Web.Spread.OperationMode.RowMode
  FpSpread1.ActiveSheetView.Columns.Default.CellType = New FarPoint.Web.Spread.TextCellType()

  Label1.Text = "Start:"
  Label2.Text = "Finish:"
End Sub

------------------------------------
クライアント側スクリプト
------------------------------------
document.onreadystatechange = function () {
  if (document.readyState == "complete") {
    var spread = document.getElementById("FpSpread1");
    if (spread.addEventListener) {
      spread.addEventListener("ActiveCellChanging", ActiveCellChanging, false);
      spread.addEventListener("ActiveCellChanged", ActiveCellChanged, false);
    } else {
      spread.onActiveCellChanging = ActiveCellChanging;
      spread.onActiveCellChanged = ActiveCellChanged;
    }
  }
}
function ActiveCellChanging(e) {
  e = e || window.event;
  var now = new Date();
  var label1 = document.getElementById("Label1");
  label1.innerText = "Start:" + now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds() + ":" + now.getMilliseconds();
}
function ActiveCellChanged(e) {
  e = e || window.event;
  var now = new Date();
  var label2 = document.getElementById("Label2");
  label2.innerText = "Finish:" + now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds() + ":" + now.getMilliseconds();
}

【再現手順】
1.新規WebフォームにSPREAD、Label1、Label2を配置します
2.Webフォームに下記の再現コードを貼り付け、Webフォームを起動します
 -- 行を選択しLabel1、Label2に出力された時間の差を計測します

Internet Explorer 8で行選択に要する時間
8.0J SP1(8.0.4001.2010): 8.111秒
7.0J 初版(7.0.4001.2010): 0.23秒
回避方法
Service Pack 2(v8.0.4002.2010)で修正済み。