【スクリプト】コンボボックス型セルの値を変更した際、onDataChanged イベントが発生しない場合がある
対象製品
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>
セルの編集が確定した際、下記のような手順において、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