【クライアント】onActiveCellChanging イベントでアクティブセル移動をキャンセルした後、アクティブセルの移動が不正になる場合がある

文書番号 : 26902     文書種別 : 不具合     最終更新日 : 2009/04/09
文書を印刷する
対象製品
SPREAD for .NET 2.5J Web Forms Edition
発生環境
動作保証環境と同様
状況
修正済み
詳細
onActiveCellChanging イベントにて、[Tab]キーなどによるアクティブセルの移動をキャンセルした後、アクティブセルの移動が正しく行われません。

【手順】
1.新規WebフォームにSPREADのみを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.A1セルをクリックします
4.[Shift + Tab]キーを押下します
5.アクティブセルの移動がキャンセルされます
6.[Tab]キーを押下します
7.B3セルに移動します

【サンプルコード】
-------------------------
クライアント側スクリプト
-------------------------
<script type="text/javascript">
  function window.onload()
  {
    var spread = document.getElementById("FpSpread1");
    spread.onActiveCellChanging = ac;
  }

  function ac()
  {
    var s = event.spread;

    if(s.ActiveCol == 0 && s.ActiveRow == 0 && event.col == s.GetColCount() - 1 && event.row == s.GetRowCount() - 1)
    {      
      event.cancel = true;
    }
  }
</script>
回避方法
2009/05/27版で修正済み。

2009/05/27版より前のバージョンでは次の回避方法が有効です。

アクティブセル移動のキャンセル後、明示的にアクティブセルの設定を行います。

【サンプルコード】
-------------------------
クライアント側スクリプト
-------------------------
<script type="text/javascript">
  function window.onload()
  {
    var spread = document.getElementById("FpSpread1");
    spread.onActiveCellChanging = ac;
  }

  function ac()
  {
    var s = event.spread;

    if(s.ActiveCol == 0 && s.ActiveRow == 0 && event.col == s.GetColCount() - 1 && event.row == s.GetRowCount() - 1)
    {      
      event.cancel = true;
      s.SetActiveCell(0,0);
    }
  }
</script>
キーワード
SPRN06916

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