コマンドバーに独自にボタンを追加して独自の処理を実装するには?
対象製品
SPREAD for .NET 2.5J Web Forms Edition
詳細
次の方法で可能です。
まずWebフォームクラスのOnInitメソッド内でコマンドバーに追加するボタンのインスタンスを作成します。
次にボタンをコマンドバー上に描画するためにPageクラスのRenderメソッドをオーバーライドします。
追加したボタンのイベントをクライアン側のスクリプト関数を使って、SPREADのButtonCommandイベントに関連付けます。
以下、サンプルコードです。
【VB サンプルコード】(VS2002/2003)
【C# サンプルコード】(VS2002/2003)
【VB サンプルコード】(VS2005)
まず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
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;
}
}
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
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