【セル型】リンクボタン型セルを右クリックして「開く」を選択するとButtonCommandイベントで不正なコマンド名が設定されている

文書番号 : 23963     文書種別 : 不具合     最終更新日 : 2007/06/15
文書を印刷する
対象製品
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」が表示されます
回避方法
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
キーワード
SPRN06092

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