コマンドバーに独自にボタンを追加して独自の処理を実装するには?

文書番号 : 21807     文書種別 : 使用方法     最終更新日 : 2006/06/23
文書を印刷する
対象製品
SPREAD for .NET 2.5J Web Forms Edition
詳細
次の方法で可能です。

まずWebフォームクラスのOnInitメソッド内でコマンドバーに追加するボタンのインスタンスを作成します。
次にボタンをコマンドバー上に描画するためにPageクラスのRenderメソッドをオーバーライドします。
追加したボタンのイベントをクライアン側のスクリプト関数を使って、SPREADのButtonCommandイベントに関連付けます。
以下、サンプルコードです。

【VB サンプルコード】(VS2002/2003)
'Webフォームクラスに次のコードを追加して下さい。

  Protected MyBtn As Button

  Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)
    Dim con As Control = FpSpread1.FindControl("Copy")

    Dim tc As TableCell = CType(con.Parent, TableCell)
    Dim tr As TableRow = CType(tc.Parent, TableRow)

    Dim c As New TableCell
    c.Controls.Add(MyBtn)

    tr.Cells.Add(c)
    MyBase.Render(writer)

  End Sub

  Public Sub MyBtn_Command(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SpreadCommandEventArgs) Handles FpSpread1.ButtonCommand
    If e.CommandName = "ping" Then
      FpSpread1.Sheets(0).Cells(0, 0).Text += "Clicked"
    Else
      e.Handled = True
    End If

  End Sub


  '下記はWebフォームデザイナで生成されるプロシージャです。デザイナで生成したプロシージャに内容をコピーして下さい"
  Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init

    MyBtn = New Button
    MyBtn.Width = Unit.Pixel(20)
    MyBtn.Height = Unit.Pixel(20)
    MyBtn.BackColor = Color.Red

    MyBtn.CommandName = "ping"
    Dim sarg As String = "javascript:" + Page.GetPostBackEventReference(FpSpread1, "ping") + ";return false;"
    MyBtn.Attributes.Add("onclick", sarg)

    InitializeComponent()
  End Sub

【C# サンプルコード】(VS2002/2003)
using System;
using System.Drawing;
using System.Web.UI;
using System.Web.UI.WebControls;

public class WebForm1 : System.Web.UI.Page
{
protected Button MyBtn;
protected FarPoint.Web.Spread.FpSpread FpSpread1;
  :
:
protected override void Render(HtmlTextWriter writer)
{
  Control con=FpSpread1.FindControl("Copy");

  TableCell tc=(TableCell)con.Parent;
  TableRow tr=(TableRow)tc.Parent;

  TableCell c =new TableCell();
  c.Controls.Add(MyBtn);

  tr.Cells.Add(c);
  base.Render (writer);
}
override protected void OnInit(EventArgs e)
{
  //赤い正方形のボタンを作成します
  MyBtn=new Button();
  MyBtn.Width = Unit.Pixel(20);
  MyBtn.Height = Unit.Pixel(20);
  MyBtn.BackColor = Color.Red;

  MyBtn.CommandName="ping";
  /*クライアント側スクリプト関数の参照を取得し、
   *独自に追加したボタンのイベントをSPREADの
   *イベントに関連付けます*/
  string sarg="javascript:"
  +this.Page.GetPostBackEventReference(FpSpread1,"ping")
  +"; return false;";        
  MyBtn.Attributes.Add("onclick",sarg);

  InitializeComponent();
  base.OnInit(e);
}
private void InitializeComponent()
{
  FpSpread1.ButtonCommand+=new FarPoint.Web.Spread.SpreadCommandEventHandler(MyBtn_Command);
  this.Load += new System.EventHandler(this.Page_Load);
}
private void MyBtn_Command(object sender, FarPoint.Web.Spread.SpreadCommandEventArgs e)
{
  /*SPREADのButtonCommandが発生したときは
  *追加したボタンの"ping"イベントかどうかを
  *確認します*/
  if(e.CommandName=="ping")
   Label1.Text="今カスタムボタンが押しましたね";
  else
   e.Handled=true;
}
}


【VB サンプルコード】(VS2005)
  Protected MyBtn As Button

  Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)
    Dim con As Control = FpSpread1.FindControl("Copy")

    Dim tc As TableCell = CType(con.Parent, TableCell)
    Dim tr As TableRow = CType(tc.Parent, TableRow)

    Dim c As New TableCell
    c.Controls.Add(MyBtn)

    tr.Cells.Add(c)
    MyBase.Render(writer)
  End Sub

  Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
    MyBtn = New Button
    MyBtn.Width = Unit.Pixel(20)
    MyBtn.Height = Unit.Pixel(20)
    MyBtn.BackColor = Drawing.Color.Red

    MyBtn.CommandName = "ping"
    Dim cs As ClientScriptManager = Page.ClientScript
    Dim sarg As String = "javascript:" + cs.GetPostBackEventReference(FpSpread1, "ping") + ";return false;"
    MyBtn.Attributes.Add("onclick", sarg)
  End Sub

  Protected Sub MyBtn_Command(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SpreadCommandEventArgs) Handles FpSpread1.ButtonCommand
    If e.CommandName = "ping" Then
      FpSpread1.Sheets(0).Cells(0, 0).Text += "Clicked"
    Else
      e.Handled = True
    End If
  End Sub
キーワード
外観 一般

この文書は、以前は次のFAQ IDで公開されていました : 9131