【セル型】リンクボタン型セルを右クリックして「開く」を選択するとButtonCommandイベントで不正なコマンド名が設定されている
対象製品
SPREAD for .NET 2.5J Web Forms Edition
発生環境
動作保証環境と同様
状況
修正済み
詳細
リンクボタン型セルを右クリックして、表示されるコンテキストメニューから「開く」を選択します。このとき、ButtonCommandイベントは発生しますがイベント引数には不正なコマンド名「ChildClick」が設定されています。
[再現手順]
1.新規WebフォームにSPREADを配置して下記のコードをコピーします
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If IsPostBack Then Return
Dim lb As New FarPoint.Web.Spread.ButtonCellType("test", FarPoint.Web.Spread.ButtonType.LinkButton)
FpSpread1.Sheets(0).Columns(1).CellType = lb
End Sub
Private Sub FpSpread1_ButtonCommand(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SpreadCommandEventArgs) Handles FpSpread1.ButtonCommand
Response.Write(e.CommandName)
End Sub
2.実行します
3.リンクボタンをクリックします
--- 正しいコマンド名「test」が表示されます
4.リンクボタンを右クリックし、表示されるコンテキストメニューから「開く」を選びます
--- 不正なコマンド名「ChildClick」が表示されます
[再現手順]
1.新規WebフォームにSPREADを配置して下記のコードをコピーします
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If IsPostBack Then Return
Dim lb As New FarPoint.Web.Spread.ButtonCellType("test", FarPoint.Web.Spread.ButtonType.LinkButton)
FpSpread1.Sheets(0).Columns(1).CellType = lb
End Sub
Private Sub FpSpread1_ButtonCommand(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SpreadCommandEventArgs) Handles FpSpread1.ButtonCommand
Response.Write(e.CommandName)
End Sub
2.実行します
3.リンクボタンをクリックします
--- 正しいコマンド名「test」が表示されます
4.リンクボタンを右クリックし、表示されるコンテキストメニューから「開く」を選びます
--- 不正なコマンド名「ChildClick」が表示されます
回避方法
2007/09/05版で修正済み。
2007/09/05版より前のバージョンでは次の回避方法が有効です。
リンクボタン型セル(コマンドボタン型セル)を継承したカスタムセルを作成し、onclickと同様なスクリプトを実装したhref属性を追加します。
------------------------------------
Webフォームクラス
------------------------------------
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Page.IsPostBack Then
Return
End If
Dim lb As New MyLinkButtonCell
lb.CommandName = "test"
FpSpread1.Sheets(0).Columns(1).CellType = lb
End Sub
------------------------------------
カスタムセル型クラス
------------------------------------
<Serializable()> Public Class MyLinkButtonCell
Inherits FarPoint.Web.Spread.ButtonCellType
Implements FarPoint.Web.Spread.Model.ICanSerializeXml
Public Sub New()
Me.ButtonType = FarPoint.Web.Spread.ButtonType.LinkButton
End Sub
Public Overrides Function PaintCell(ByVal id As String, ByVal parent As System.Web.UI.WebControls.TableCell, ByVal style As FarPoint.Web.Spread.Appearance, ByVal margin As FarPoint.Web.Spread.Inset, ByVal value As Object, ByVal upperLevel As Boolean) As System.Web.UI.Control
Dim b As LinkButton = CType(MyBase.PaintCell(id, parent, style, margin, value, upperLevel), LinkButton)
Dim lb As New HyperLink
lb.Text = b.Text
Dim jscript As String = b.Attributes.Item("onclick")
lb.NavigateUrl = "javascript:" & jscript.Split(";")(0) & ";"
Return lb
End Function
Public ReadOnly Property CanSerializeXml() As Boolean Implements FarPoint.Web.Spread.Model.ICanSerializeXml.CanSerializeXml
Get
Return False
End Get
End Property
End Class
2007/09/05版より前のバージョンでは次の回避方法が有効です。
リンクボタン型セル(コマンドボタン型セル)を継承したカスタムセルを作成し、onclickと同様なスクリプトを実装したhref属性を追加します。
------------------------------------
Webフォームクラス
------------------------------------
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Page.IsPostBack Then
Return
End If
Dim lb As New MyLinkButtonCell
lb.CommandName = "test"
FpSpread1.Sheets(0).Columns(1).CellType = lb
End Sub
------------------------------------
カスタムセル型クラス
------------------------------------
<Serializable()> Public Class MyLinkButtonCell
Inherits FarPoint.Web.Spread.ButtonCellType
Implements FarPoint.Web.Spread.Model.ICanSerializeXml
Public Sub New()
Me.ButtonType = FarPoint.Web.Spread.ButtonType.LinkButton
End Sub
Public Overrides Function PaintCell(ByVal id As String, ByVal parent As System.Web.UI.WebControls.TableCell, ByVal style As FarPoint.Web.Spread.Appearance, ByVal margin As FarPoint.Web.Spread.Inset, ByVal value As Object, ByVal upperLevel As Boolean) As System.Web.UI.Control
Dim b As LinkButton = CType(MyBase.PaintCell(id, parent, style, margin, value, upperLevel), LinkButton)
Dim lb As New HyperLink
lb.Text = b.Text
Dim jscript As String = b.Attributes.Item("onclick")
lb.NavigateUrl = "javascript:" & jscript.Split(";")(0) & ";"
Return lb
End Function
Public ReadOnly Property CanSerializeXml() As Boolean Implements FarPoint.Web.Spread.Model.ICanSerializeXml.CanSerializeXml
Get
Return False
End Get
End Property
End Class
キーワード
SPRN06092
この文書は、以前は次のバグレポートIDで公開されていました : 6994