【クライアント】ClientAutoCalculation プロパティをTrueに設定した場合、[Esc]キーによるセルの値のクリア後の数式が正しく計算されない

文書番号 : 26891     文書種別 : 不具合     最終更新日 : 2009/04/03
文書を印刷する
対象製品
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
回避方法
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>
キーワード
SPRN07169

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