【クライアント】ClientAutoCalculation プロパティをTrueに設定した場合、[Esc]キーによるセルの値のクリア後の数式が正しく計算されない
対象製品
SPREAD for .NET 2.5J Web Forms Edition
発生環境
動作保証環境と同様
状況
修正済み
詳細
ClientAutoCalculation プロパティをTrueに設定した場合、[Esc]キーを押下してセルの値をクリアすると、数式が正しく計算されません。
【手順】
1.新規WebフォームにSPREADのみを配置します。
2.下記サンプルコードをコピーし、アプリケーションを実行します。
3.A1セルに「150」と入力します。
4.B1セルをアクティブにし、[Esc]キーを2回押下します。
--- セルの値がクリアされます。
5.[Enter]キーを押下してセルの編集を終了します。
--- D1セルの値が「200」になります。
※正しい値は「250(150(A1セル) + 100(C1セル))」です。
【サンプルコード】
-------------------------
Webフォームクラス
-------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then
Return
End If
FpSpread1.ActiveSheetView.Cells(0, 0).Value = 100
FpSpread1.ActiveSheetView.Cells(0, 1).Value = 100
FpSpread1.ActiveSheetView.Cells(0, 2).Value = 100
FpSpread1.ActiveSheetView.Cells(0, 3).Formula = "SUM(A1:C1)"
FpSpread1.ClientAutoCalculation = True
End Sub
【手順】
1.新規WebフォームにSPREADのみを配置します。
2.下記サンプルコードをコピーし、アプリケーションを実行します。
3.A1セルに「150」と入力します。
4.B1セルをアクティブにし、[Esc]キーを2回押下します。
--- セルの値がクリアされます。
5.[Enter]キーを押下してセルの編集を終了します。
--- D1セルの値が「200」になります。
※正しい値は「250(150(A1セル) + 100(C1セル))」です。
【サンプルコード】
-------------------------
Webフォームクラス
-------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then
Return
End If
FpSpread1.ActiveSheetView.Cells(0, 0).Value = 100
FpSpread1.ActiveSheetView.Cells(0, 1).Value = 100
FpSpread1.ActiveSheetView.Cells(0, 2).Value = 100
FpSpread1.ActiveSheetView.Cells(0, 3).Formula = "SUM(A1:C1)"
FpSpread1.ClientAutoCalculation = True
End Sub
回避方法
2009/05/27版で修正済み。
2009/05/27版より前のバージョンでは次の回避方法が有効です。
編集中セルでの[Esc]キーを無効化します。
-------------------------
クライアント側スクリプト
-------------------------
<script type="text/javascript">
var EFLG; // 編集モードフラグ
function window.onload()
{
var spread = document.getElementById("FpSpread1");
spread.onkeydown = kd;
spread.onEditStart = edstart;
spread.onEditStopped = edstop;
}
function kd()
{
// [Esc]キーを無効化
if (event.keyCode == 27 && EFLG == true)
{
event.keyCode = 0;
event.returnValue = false;
event.cancelBubble = true;
}
}
function edstart()
{
EFLG = true;
}
function edstop()
{
EFLG = false;
}
</script>
2009/05/27版より前のバージョンでは次の回避方法が有効です。
編集中セルでの[Esc]キーを無効化します。
-------------------------
クライアント側スクリプト
-------------------------
<script type="text/javascript">
var EFLG; // 編集モードフラグ
function window.onload()
{
var spread = document.getElementById("FpSpread1");
spread.onkeydown = kd;
spread.onEditStart = edstart;
spread.onEditStopped = edstop;
}
function kd()
{
// [Esc]キーを無効化
if (event.keyCode == 27 && EFLG == true)
{
event.keyCode = 0;
event.returnValue = false;
event.cancelBubble = true;
}
}
function edstart()
{
EFLG = true;
}
function edstop()
{
EFLG = false;
}
</script>
キーワード
SPRN07169
この文書は、以前は次のバグレポートIDで公開されていました : 7910