【クライアント】上下矢印キーでコンボボックス型セルの値を変更すると、onDataChanged イベント内で編集した値が取得できない場合がある
対象製品
SPREAD for .NET 2.5J Web Forms Edition
発生環境
動作保証環境と同様
状況
修正済み
詳細
編集中のコンボボックス型セルでは[Alt + ↓]キーでドロップダウンリストを開き、上下矢印キーで値を変更することができます。
この際、[Enter]キーを押下してセルの値を確定した場合、onDataChanged イベント内で編集する前の値が取得されます。
【手順】
1.新規WebフォームにSPREADのみを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.A1セルをクリックします
4.[Tab]キーを押下してB1セルに移動します
5.[Space]キーを押下して編集状態にした後、[Alt + ↓]キーでドロップダウンリストを開きます
6.上下矢印キー項目を変更し、[Enter]キーを押下して値を確定します
7.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>
この際、[Enter]キーを押下してセルの値を確定した場合、onDataChanged イベント内で編集する前の値が取得されます。
【手順】
1.新規WebフォームにSPREADのみを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.A1セルをクリックします
4.[Tab]キーを押下してB1セルに移動します
5.[Space]キーを押下して編集状態にした後、[Alt + ↓]キーでドロップダウンリストを開きます
6.上下矢印キー項目を変更し、[Enter]キーを押下して値を確定します
7.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>
回避方法
2008/08/27版で修正済み。
キーワード
SPRN06884
この文書は、以前は次のバグレポートIDで公開されていました : 7615