ナビゲーション リンクのスキップ
 新機能 の展開 新機能
 InputMan連携 の展開 InputMan連携
 マルチタッチ機能 の展開 マルチタッチ機能
 セル、行、列、ヘッダ の展開 セル、行、列、ヘッダ
 シート の展開 シート
 スタイル の展開 スタイル
 選択 の展開 選択
 セル型 の展開 セル型
 編集 の展開 編集
 ソート の展開 ソート
 フィルタリング の展開 フィルタリング
 グループ化 の展開 グループ化
 ページング の展開 ページング
 スクロール の展開 スクロール
 データ連結 の展開 データ連結
 階層表示 の展開 階層表示
 コマンドバー の展開 コマンドバー
 チャート の展開 チャート
 数式 の展開 数式
 インポート/エクスポート の展開 インポート/エクスポート
 クライアント側スクリプト の縮小 クライアント側スクリプト

コールバック

クライアント側スクリプトで提供されるCallBack メソッドでASPX ページへのコールバックを行います。

FpSpreadクラスのイベントに対応するコマンド名を引数に指定してCallBackメソッドを実行すると、 SPREADのコマンドバーの各ボタンを押した時と同じ動作を得ることができます。

製品で予約されていない文字列を CallBack メソッドのコマンド名に指定すると、 サーバー側でButtonCommandイベントが発生します。 コマンド名に指定した文字列は ButtonCommandイベントのイベント引数e.CommandNameにて取得できます。 つまり、アプリケーション独自のコマンド名を指定することでButtonCommandイベントの中で各コールバックを識別することができます。

また、onCallBackStart イベント、onCallBackStopped イベントにてそれぞれ、 コントロールが ASPX ページに要求を送信する直前とコールバック要求の結果を受け取った時のイベントを発生させることもできます。

このサンプルでは、ボタン押下時に独自のコマンド名を指定し、CallBack メソッドを実行しています。
サーバー側ではButtonCommandイベントにてコマンド名を識別し、セルのロックと解除を実装しています。
 ID氏名カナ生年月日性別血液型部署入社日メールアドレス
11001亀甲 滋万キコウ シゲマ1950/02/04A人事部1972/04/01sigema_kikou@abc.co.jp
21002寒田 希世カンダ キヨ1959/06/28B人事部1981/04/01kiyo_kanda@bbb.or.jp
31003小和瀬 澄オワセ キヨ1969/03/06A人事部1991/04/01kiyo_owase@aaa.co.jp
41004宇夫 早余子ウブ サヨコ1976/07/28O人事部1998/04/01sayoko_ubu@bbb.or.jp
51005宇田津 聖智ウダツ キヨトモ1965/09/04A営業部1987/04/01kiyotomo_udatu@abc.co.jp
61006茨城 昭児イバラキ ショウジ1963/04/28O営業部1985/04/01shouzi_ibaraki@xyz.ne.jp
71007石ヶ休 椎茄イシガキュウ シイナ1953/02/21O営業部1975/04/01siina_isigagyuu@abc.co.jp
81008赤司 恵治郎アカツカサ ケイジロウ1968/08/02O経理部1990/04/01keizirou_akatukasa@abc.co.jp
91009小橋 仰一オハシ ギョウイチ1972/03/02B経理部1994/04/01gyouiti_ohasi@abc.co.jp
101010一重 公大イチジュウ コウダイ1964/04/19B経理部1986/04/01koudai_itizyuu@xyz.ne.jp
   

ソースコード

別ウィンドウで表示
using System;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration;
public partial class clientcallback : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // クライアントイベント設定
        string js = "var spid='" + FpSpread1.ClientID + "';";
        ClientScript.RegisterStartupScript(this.GetType(), "onStartUpScript", js, true);       

        if (IsPostBack) return;

        //データ連結
        DataSet ds = new DataSet();
        ds.ReadXml(MapPath("../App_Data/data50.xml"));
        FpSpread1.DataSource = ds;

        //SPREAD初期化
        InitSpread(FpSpread1.Sheets[0]);
    }

    private void InitSpread(FarPoint.Web.Spread.SheetView sheet)
    {
        //SPREAD設定
        sheet.FpSpread.CssClass = "spreadStyle";
        sheet.FpSpread.ShowFocusRectangle = true;
        sheet.FpSpread.UseClipboard = false;

        // フォントサイズの設定
        sheet.DefaultStyle.Font.Size = FontUnit.Parse("80%");
        sheet.ColumnHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%");
        sheet.RowHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%");
        sheet.SheetCorner.DefaultStyle.Font.Size = FontUnit.Parse("80%");

        //シート設定
        sheet.PageSize = 10;

        //列幅の設定
        sheet.Columns[0].Width = 38;
        sheet.Columns[1].Width = 88;
        sheet.Columns[2].Width = 98;
        sheet.Columns[3].Width = 80;
        sheet.Columns[4].Width = 38;
        sheet.Columns[5].Width = 46;
        sheet.Columns[6].Width = 46;
        sheet.Columns[7].Width = 80;
        sheet.Columns[8].Width = 174;

        // 縦方向の揃え位置を中央に設定
        sheet.DefaultStyle.VerticalAlign = VerticalAlign.Middle;

        // ロックされたセルのスタイルの設定
        sheet.LockBackColor = System.Drawing.Color.Red;
        sheet.LockForeColor = System.Drawing.Color.White;
    }

    protected void FpSpread1_ButtonCommand(object sender, FarPoint.Web.Spread.SpreadCommandEventArgs e)
    {
        switch (e.CommandName)
	    {
            case "lock":
                FpSpread1.ActiveSheetView.DefaultStyle.Locked = true;
                break;

            case "unlock":
                FpSpread1.ActiveSheetView.DefaultStyle.Locked = false;
                break;
	    }

    }
}

Partial Public Class clientcallback
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        ' クライアントイベント設定
        Dim js As String = "var spid='" + FpSpread1.ClientID & "';"
        ClientScript.RegisterStartupScript(Me.GetType(), "onStartUpScript", js, True)

        If IsPostBack Then
            Return
        End If

        'データ連結
        Dim ds As New System.Data.DataSet()
        ds.ReadXml(MapPath("../App_Data/data50.xml"))
        FpSpread1.DataSource = ds

        'SPREAD初期化
        InitSpread(FpSpread1.Sheets(0))
    End Sub

    Private Sub InitSpread(ByVal sheet As FarPoint.Web.Spread.SheetView)
        'SPREAD設定
        sheet.FpSpread.CssClass = "spreadStyle"
        sheet.FpSpread.ShowFocusRectangle = True
        sheet.FpSpread.UseClipboard = False

        ' フォントサイズの設定
        sheet.DefaultStyle.Font.Size = FontUnit.Parse("80%")
        sheet.ColumnHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%")
        sheet.RowHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%")
        sheet.SheetCorner.DefaultStyle.Font.Size = FontUnit.Parse("80%")

        'シート設定
        sheet.PageSize = 10

        '列幅の設定
        sheet.Columns(0).Width = 38
        sheet.Columns(1).Width = 88
        sheet.Columns(2).Width = 98
        sheet.Columns(3).Width = 80
        sheet.Columns(4).Width = 38
        sheet.Columns(5).Width = 46
        sheet.Columns(6).Width = 46
        sheet.Columns(7).Width = 80
        sheet.Columns(8).Width = 174

        ' 縦方向の揃え位置を中央に設定
        sheet.DefaultStyle.VerticalAlign = VerticalAlign.Middle

        ' ロックされたセルのスタイルの設定
        sheet.LockBackColor = System.Drawing.Color.Red
        sheet.LockForeColor = System.Drawing.Color.White
    End Sub

    Protected Sub FpSpread1_ButtonCommand(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SpreadCommandEventArgs) Handles FpSpread1.ButtonCommand
        Select Case e.CommandName
            Case "lock"
                FpSpread1.ActiveSheetView.DefaultStyle.Locked = True
                Exit Select

            Case "unlock"
                FpSpread1.ActiveSheetView.DefaultStyle.Locked = False
                Exit Select
        End Select
    End Sub
End Class
<%@ Page MasterPageFile="~/MasterPage.master" Language="c#" AutoEventWireup="true" 
         Inherits="clientcallback" CodeFile="clientcallback.aspx.cs" %>

<%@ Register Assembly="FarPoint.Web.SpreadJ" Namespace="FarPoint.Web.Spread" TagPrefix="FarPoint" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeaderPlaceHolder1" Runat="Server">
    <script type="text/javascript">
        function splock(enable) {
            var spread = document.getElementById(spid);
            if (enable == 1) {
                spread.CallBack("lock");
            } else {
                spread.CallBack("unlock");
            }
        }

        function cstart(e) {
            var e = e || window.event;
            var enm = e.command;
            if (enm.indexOf("lock") != -1) {
                e.async = true;
            }
        }       
    </script>
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <input id="Button1" type="button" value="セルをロック" onclick="splock(1)" />
    <input id="Button2" type="button" value="ロック解除" onclick="splock(0)" />
    <farpoint:FpSpread ID="FpSpread1" runat="server"  BorderColor="#A0A0A0" BorderStyle="Solid"
        BorderWidth="1px" onbuttoncommand="FpSpread1_ButtonCommand">
        <CommandBar BackColor="#F6F6F6" ButtonFaceColor="Control" ButtonHighlightColor="ControlLightLight"
            ButtonShadowColor="ControlDark" />
        <Sheets>
            <farpoint:SheetView SheetName="Sheet1">
            </farpoint:SheetView>
        </Sheets>
    </farpoint:FpSpread>
</asp:Content>