作成日: 2017/04/24 最終更新日: 2017/05/12
文書種別
不具合
状況
修正済み
詳細
ボタン型セルをロックしクライアント側で解除すると、OnClientClickに設定した処理が実行されません。
【再現手順】
1.新規Webフォームを作成しSPREADコントロールとボタンコントロールを配置します
2.サンプルコードをコピーしプロジェクトを起動します
3.セルB2をクリックして標準のボタンをクリックします
-- セルA2のロックが解除されます
4.セルA2をクリックします
-- Alertが表示されません(OnClientClickに設定された処理が実行されません)
【サンプルコード】
------------------------------------
Webフォームクラス
------------------------------------
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If IsPostBack Then Return
' セル型の設定
Dim bCell As New FarPoint.Web.Spread.ButtonCellType()
bCell.OnClientClick = "test()"
FpSpread1.ActiveSheetView.Columns(0).CellType = bCell
' ロックの設定
FpSpread1.AllowClientUnlock = True
FpSpread1.ActiveSheetView.Cells(0, 0, FpSpread1.ActiveSheetView.RowCount - 1, 0).Locked = True
' Buttonの設定
Button1.OnClientClick = "UnLock(); return false;"
Button1.UseSubmitBehavior = False
End Sub
------------------------------------
クライアント側スクリプト
------------------------------------
function UnLock() {
var spread = document.getElementById("FpSpread1");
var row = spread.GetActiveRow();
spread.Cells(row, 0).SetLocked(false);
}
function test() {
alert("テスト");
}
【再現手順】
1.新規Webフォームを作成しSPREADコントロールとボタンコントロールを配置します
2.サンプルコードをコピーしプロジェクトを起動します
3.セルB2をクリックして標準のボタンをクリックします
-- セルA2のロックが解除されます
4.セルA2をクリックします
-- Alertが表示されません(OnClientClickに設定された処理が実行されません)
【サンプルコード】
------------------------------------
Webフォームクラス
------------------------------------
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If IsPostBack Then Return
' セル型の設定
Dim bCell As New FarPoint.Web.Spread.ButtonCellType()
bCell.OnClientClick = "test()"
FpSpread1.ActiveSheetView.Columns(0).CellType = bCell
' ロックの設定
FpSpread1.AllowClientUnlock = True
FpSpread1.ActiveSheetView.Cells(0, 0, FpSpread1.ActiveSheetView.RowCount - 1, 0).Locked = True
' Buttonの設定
Button1.OnClientClick = "UnLock(); return false;"
Button1.UseSubmitBehavior = False
End Sub
------------------------------------
クライアント側スクリプト
------------------------------------
function UnLock() {
var spread = document.getElementById("FpSpread1");
var row = spread.GetActiveRow();
spread.Cells(row, 0).SetLocked(false);
}
function test() {
alert("テスト");
}
回避方法
Service Pack 1(v10.0.4002.2013)で修正済み。
Service Pack 1より前のバージョンでは次の回避方法が有効です。
------------------------------------------
ロックを解除した後にUpdateメソッドを呼び出します。
------------------------------------
クライアント側スクリプト
------------------------------------
function UnLock() {
var spread = document.getElementById("FpSpread1");
var row = spread.GetActiveRow();
spread.Cells(row, 0).SetLocked(false);
spread.Update();
}
Service Pack 1より前のバージョンでは次の回避方法が有効です。
------------------------------------------
ロックを解除した後にUpdateメソッドを呼び出します。
------------------------------------
クライアント側スクリプト
------------------------------------
function UnLock() {
var spread = document.getElementById("FpSpread1");
var row = spread.GetActiveRow();
spread.Cells(row, 0).SetLocked(false);
spread.Update();
}
旧文書番号
40317