【スクリプト】コンボボックス型セルの値を変更した際、onDataChanged イベントが発生しない場合がある

文書番号 : 26899     文書種別 : 不具合     最終更新日 : 2009/04/08
文書を印刷する
対象製品
SPREAD for .NET 2.5J Web Forms Edition
発生環境
動作保証環境と同様
状況
修正済み
詳細
アクティブセルの移動や[Enter]キーの押下によりセルの編集が確定し、onDataChanged イベントが発生します。
セルの編集が確定した際、下記のような手順において、onDataChanged イベントが発生しない場合があります。

【手順】
1.新規WebフォームにSPREADのみを配置します。
2.下記サンプルコードをコピーし、アプリケーションを実行します。
3.B1セルのコンボボックスで「Feb」を選択した後、[Enter]キーを押下して値を確定します。
   --- onDataChanged イベントが発生します。
4.[Space]キーを押下して編集状態にします。
5.[↑]キーで「Jan」を選択した後、[Enter]キーを押下して値を確定します。
   --- onDataChanged イベントが発生しません。
   ※本来は、onDataChanged イベントが発生することが正しい動作です。
6.マウスにてB1セルで「Feb」を選択した後、[→]キーを押下してC1セルに移動します。
   --- onDataChanged イベントが発生しません。
   ※本来は、onDataChanged イベントが発生することが正しい動作です。

【サンプルコード】
-------------------------
Webフォームクラス
-------------------------
  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If IsPostBack Then
      Return
    End If

    Dim cbstr As String()
    cbstr = New String() {"Jan", "Feb", "Mar", "Apr", "May", "Jun"}
    Dim cmbbx As New FarPoint.Web.Spread.ComboBoxCellType(cbstr)
    cmbbx.ShowButton = True
    FpSpread1.ActiveSheetView.Columns(1).CellType = cmbbx
  End Sub

-------------------------
クライアント側スクリプト
-------------------------
<script type="text/javascript">
  window.onload = init;
  
  function init()
  {
    var spread = document.getElementById("FpSpread1");
    
    if(document.all)
    {
      spread.onDataChanged = dataChanged;
    }
    else
    {
      spread.addEventListener("DataChanged",dataChanged,false);
    }
  }
  function dataChanged(e)
  {
    var e = e || window.event;
    alert(e.cellValue);
  }
</script>
回避方法
2009/05/27版で修正済み。
キーワード
SPRN07294

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