Internet Explorer 11およびiPad上でのSizeToFit処理に時間を要する
対象製品
SPREAD for ASP.NET 8.0J
発生環境
Internet Explorer 11/iPad
状況
修正済み
詳細
過去のバージョンと比較して、IE11およびiPad上でのSizeToFit処理に時間を要する現象が発生します。
【再現手順】
1.新規WebフォームにSPREADを配置する
2.Webフォームに下記の再現コードを貼り付け、Web フォームを起動する
3.処理にかかった時間のアラート表示内容を確認する
--- IE11、iPadでの実行時、通常より処理に時間を要している(IE8~IE10上、および他バージョンで動作させた場合の2~4倍の所要時間)
【再現コード】
------------------------------------
Webフォームクラス
------------------------------------
Public Class WebForm1
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' SPREADの設定
InitSpread()
' シート設定
InitSpreadStyles()
End Sub
Private Sub InitSpread()
Dim Sheet0 As FarPoint.Web.Spread.SheetView
Sheet0 = FpSpread1.Sheets(0)
Sheet0.RowCount = 100
Sheet0.AddColumns(1, 10)
Sheet0.PageSize = 100
Dim chkbx As New FarPoint.Web.Spread.CheckBoxCellType()
Dim label As New FarPoint.Web.Spread.LabelCellType()
FpSpread1.SelectionBlockOptions = FarPoint.Web.Spread.SelectionBlockOptions.Rows
For rowIndex As Integer = 0 To Sheet0.RowCount - 1
Sheet0.Cells(rowIndex, 0).CellType = chkbx
Next
For rowIndex As Integer = 0 To Sheet0.RowCount - 1
For colIndex As Integer = 1 To Sheet0.ColumnCount - 1
Sheet0.Cells(rowIndex, colIndex).CellType = label
Sheet0.Cells(rowIndex, colIndex).Value = "test"
Next
Next
End Sub
End Class
------------------------------------
クライアント側スクリプト
------------------------------------
document.onreadystatechange = function () {
if (document.readyState == 'complete') {
// 列幅を調整.
var spread = document.getElementById('FpSpread1');
var start = new Date();
var cols = spread.GetColCount();
for (var i = 0; i < cols ; i++) {
spread.SizeToFit(i);
}
var end = new Date();
alert(((end - start) / 1000).toString() + "秒");
}
}
Internet Explorer 11での実行結果
8.0J SP1(8.0.4001.2010): 15:208秒
7.0J SP3(7.0.4017.2010): 2.638秒
【再現手順】
1.新規WebフォームにSPREADを配置する
2.Webフォームに下記の再現コードを貼り付け、Web フォームを起動する
3.処理にかかった時間のアラート表示内容を確認する
--- IE11、iPadでの実行時、通常より処理に時間を要している(IE8~IE10上、および他バージョンで動作させた場合の2~4倍の所要時間)
【再現コード】
------------------------------------
Webフォームクラス
------------------------------------
Public Class WebForm1
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' SPREADの設定
InitSpread()
' シート設定
InitSpreadStyles()
End Sub
Private Sub InitSpread()
Dim Sheet0 As FarPoint.Web.Spread.SheetView
Sheet0 = FpSpread1.Sheets(0)
Sheet0.RowCount = 100
Sheet0.AddColumns(1, 10)
Sheet0.PageSize = 100
Dim chkbx As New FarPoint.Web.Spread.CheckBoxCellType()
Dim label As New FarPoint.Web.Spread.LabelCellType()
FpSpread1.SelectionBlockOptions = FarPoint.Web.Spread.SelectionBlockOptions.Rows
For rowIndex As Integer = 0 To Sheet0.RowCount - 1
Sheet0.Cells(rowIndex, 0).CellType = chkbx
Next
For rowIndex As Integer = 0 To Sheet0.RowCount - 1
For colIndex As Integer = 1 To Sheet0.ColumnCount - 1
Sheet0.Cells(rowIndex, colIndex).CellType = label
Sheet0.Cells(rowIndex, colIndex).Value = "test"
Next
Next
End Sub
End Class
------------------------------------
クライアント側スクリプト
------------------------------------
document.onreadystatechange = function () {
if (document.readyState == 'complete') {
// 列幅を調整.
var spread = document.getElementById('FpSpread1');
var start = new Date();
var cols = spread.GetColCount();
for (var i = 0; i < cols ; i++) {
spread.SizeToFit(i);
}
var end = new Date();
alert(((end - start) / 1000).toString() + "秒");
}
}
Internet Explorer 11での実行結果
8.0J SP1(8.0.4001.2010): 15:208秒
7.0J SP3(7.0.4017.2010): 2.638秒
回避方法
Service Pack 2(v8.0.4002.2010)で修正済み。なお、iPad上では本不具合を修正したService Pack 2でも他のブラウザに比べてSizeToFit処理に時間を要します。この動作は製品の制限事項となります。