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

コードからのグループ化

データモデルからグループデータモデルオブジェクトを取得し、 Group メソッドを実行することで、コーディングによるグループ化を行うことができます。
また、グループデータモデルのTargetModelプロパティを使用して、 グループ化されたデータモデルをオリジナルのデータモデルに戻すことでグループ化を解除できます。

このサンプルでは、ラジオボタンの選択により、「部署」列でのグループ化とグループ化の解除を実行します。
 ID氏名カナ生年月日性別血液型入社日メールアドレス
1
部署: 人事部
21003小和瀬 澄オワセ キヨ1969/03/06A1991/04/01kiyo_owase@aaa.co.jp
31004宇夫 早余子ウブ サヨコ1976/07/28O1998/04/01sayoko_ubu@bbb.or.jp
41001亀甲 滋万キコウ シゲマ1950/02/04A1972/04/01sigema_kikou@abc.co.jp
51002寒田 希世カンダ キヨ1959/06/28B1981/04/01kiyo_kanda@bbb.or.jp
6
部署: 営業部
71011稲並 勝五郎イナミ ショウゴロウ1962/02/18A1984/04/01shougorou_inami@bbb.or.jp
81012穎原 紀代一エイハラ キヨカズ1965/02/13O1987/04/01kiyokazu_eihara@bbb.or.jp
91007石ヶ休 椎茄イシガキュウ シイナ1953/02/21O1975/04/01siina_isigagyuu@abc.co.jp
101006茨城 昭児イバラキ ショウジ1963/04/28O1985/04/01shouzi_ibaraki@xyz.ne.jp
111005宇田津 聖智ウダツ キヨトモ1965/09/04A1987/04/01kiyotomo_udatu@abc.co.jp
12
部署: 経理部
131008赤司 恵治郎アカツカサ ケイジロウ1968/08/02O1990/04/01keizirou_akatukasa@abc.co.jp
141009小橋 仰一オハシ ギョウイチ1972/03/02B1994/04/01gyouiti_ohasi@abc.co.jp
151010一重 公大イチジュウ コウダイ1964/04/19B1986/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 addgroup : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack) return;

        // SPREADの設定
        InitSpread(FpSpread1);

        // シートの設定
        InitSheet(FpSpread1.Sheets[0]);

        // クライアント側スクリプトの設定
        string clientScript = "<script language=\"JavaScript\">";
        clientScript += "function grouping(val)";
        clientScript += "{";
        clientScript += "var spread = document.getElementById(\"" + FpSpread1.ClientID + "\");";
        clientScript += "spread.CallBack(\"grouping.\"+val);";
        clientScript += "}";
        clientScript += "</script>";

        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "addgroupScript", clientScript, false);
    }

    private void InitSpread(FarPoint.Web.Spread.FpSpread spread)
    {
        // データ連結
        DataSet ds = new DataSet();
        ds.ReadXml(MapPath("../App_Data/data.xml"));
        spread.DataSource = ds;  

        // SPREAD設定
        spread.CommandBar.Visible = false;
        spread.CssClass = "spreadStyle";
        spread.UseClipboard = false;   
    }

    private void InitSheet(FarPoint.Web.Spread.SheetView sheet)
    {
        // フォントサイズの設定
        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 = 20;

        // 列幅の設定
        sheet.Columns[0].Width = 35;
        sheet.Columns[1].Width = 108;
        sheet.Columns[2].Width = 98;
        sheet.Columns[3].Width = 80;
        sheet.Columns[4].Width = 38;
        sheet.Columns[5].Width = 48;
        sheet.Columns[6].Width = 48;
        sheet.Columns[7].Width = 80;
        sheet.Columns[8].Width = 198;

        // 行高の設定
        sheet.Rows.Default.Height = 26;

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

        // グルーピング設定
        sheet.GroupBarVisible = false;

        // グループ化
        grouping(sheet);
    }

    protected void grouping(FarPoint.Web.Spread.SheetView sheet)
    {
        FarPoint.Web.Spread.Model.GroupDataModel gm = new FarPoint.Web.Spread.Model.GroupDataModel(sheet.DataModel);
        FarPoint.Web.Spread.SortInfo[] sort = new FarPoint.Web.Spread.SortInfo[1];
        sort[0] = new FarPoint.Web.Spread.SortInfo(6, true);

        gm.Group(sort, System.Collections.Comparer.Default);
        sheet.DataModel = gm;

        FarPoint.Web.Spread.Model.Group dg 
            = new FarPoint.Web.Spread.Model.Group(gm, (FarPoint.Web.Spread.Model.Group)gm.Groups[0], 6, true);

        FarPoint.Web.Spread.GroupInfo gi = new FarPoint.Web.Spread.GroupInfo();
        gi.BackColor = System.Drawing.Color.SandyBrown;

        FarPoint.Web.Spread.GroupInfoCollection gic = new FarPoint.Web.Spread.GroupInfoCollection();
        gic.AddRange(new FarPoint.Web.Spread.GroupInfo[] { gi });
        sheet.GroupInfos.Add(gic[0]);

        // グループ化した列を非表示
        FpSpread1.Sheets[0].Columns[6].Visible = false;        
    }

    protected void cancelgroup(FarPoint.Web.Spread.SheetView sheet)
    {
        // グループ化を解除       
        FarPoint.Web.Spread.Model.GroupDataModel gm;
        gm = (FarPoint.Web.Spread.Model.GroupDataModel)FpSpread1.ActiveSheetView.DataModel;
        FpSpread1.ActiveSheetView.DataModel = gm.TargetModel;
        
        // グループ化していた列を表示
        FpSpread1.Sheets[0].Columns[6].Visible = true;
    }

    protected void FpSpread1_ButtonCommand(object sender, FarPoint.Web.Spread.SpreadCommandEventArgs e)
    {
        if (e.CommandName.StartsWith("grouping"))
        {
            string[] strCom = e.CommandName.Split('.');
            int val = Convert.ToInt32(strCom[1]);

            if (strCom[1].Equals("0"))
            {
                grouping(FpSpread1.ActiveSheetView);
            }
            else
            {
                cancelgroup(FpSpread1.ActiveSheetView);
            }
        }
    }
}

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

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If IsPostBack Then
            Return
        End If

        ' SPREADの設定
        InitSpread(FpSpread1)

        ' シートの設定
        InitSheet(FpSpread1.Sheets(0))

        ' クライアント側スクリプトの設定
        Dim clientScript As String = "<script language=""JavaScript"">"
        clientScript += "function grouping(val)"
        clientScript += "{"
        clientScript += "var spread = document.getElementById(""" + FpSpread1.ClientID & """);"
        clientScript += "spread.CallBack(""grouping.""+val);"
        clientScript += "}"
        clientScript += "</script>"

        ScriptManager.RegisterClientScriptBlock(Me, Me.GetType(), "addgroupScript", clientScript, False)
    End Sub

    Private Sub InitSpread(ByVal spread As FarPoint.Web.Spread.FpSpread)
        ' データ連結
        Dim ds As New System.Data.DataSet()
        ds.ReadXml(MapPath("../App_Data/data.xml"))
        spread.DataSource = ds

        ' SPREAD設定
        spread.CommandBar.Visible = False
        spread.CssClass = "spreadStyle"
        spread.UseClipboard = False
    End Sub

    Private Sub InitSheet(ByVal sheet As FarPoint.Web.Spread.SheetView)
        ' フォントサイズの設定
        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 = 20

        ' 列幅の設定
        sheet.Columns(0).Width = 35
        sheet.Columns(1).Width = 108
        sheet.Columns(2).Width = 98
        sheet.Columns(3).Width = 80
        sheet.Columns(4).Width = 38
        sheet.Columns(5).Width = 48
        sheet.Columns(6).Width = 48
        sheet.Columns(7).Width = 80
        sheet.Columns(8).Width = 198

        ' 行高の設定
        sheet.Rows.[Default].Height = 26

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

        ' グルーピング設定
        sheet.GroupBarVisible = False

        ' グループ化
        grouping(sheet)
    End Sub

    Protected Sub grouping(ByVal sheet As FarPoint.Web.Spread.SheetView)
        Dim gm As New FarPoint.Web.Spread.Model.GroupDataModel(sheet.DataModel)
        Dim sort As FarPoint.Web.Spread.SortInfo() = New FarPoint.Web.Spread.SortInfo(0) {}
        sort(0) = New FarPoint.Web.Spread.SortInfo(6, True)

        gm.Group(sort, System.Collections.Comparer.Default)
        sheet.DataModel = gm

        Dim dg As New FarPoint.Web.Spread.Model.Group(gm, DirectCast(gm.Groups(0), FarPoint.Web.Spread.Model.Group), 6, True)

        Dim gi As New FarPoint.Web.Spread.GroupInfo()
        gi.BackColor = System.Drawing.Color.SandyBrown

        Dim gic As New FarPoint.Web.Spread.GroupInfoCollection()
        gic.AddRange(New FarPoint.Web.Spread.GroupInfo() {gi})
        sheet.GroupInfos.Add(gic(0))

        ' グループ化した列を非表示
        FpSpread1.Sheets(0).Columns(6).Visible = False
    End Sub

    Protected Sub cancelgroup(ByVal sheet As FarPoint.Web.Spread.SheetView)
        ' グループ化を解除       
        Dim gm As FarPoint.Web.Spread.Model.GroupDataModel
        gm = DirectCast(FpSpread1.ActiveSheetView.DataModel, FarPoint.Web.Spread.Model.GroupDataModel)
        FpSpread1.ActiveSheetView.DataModel = gm.TargetModel

        ' グループ化していた列を表示
        FpSpread1.Sheets(0).Columns(6).Visible = True
    End Sub

    Protected Sub FpSpread1_ButtonCommand(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SpreadCommandEventArgs) Handles FpSpread1.ButtonCommand
        If e.CommandName.StartsWith("grouping") Then
            Dim strCom As String() = e.CommandName.Split("."c)
            Dim val As Integer = Convert.ToInt32(strCom(1))

            If strCom(1).Equals("0") Then
                grouping(FpSpread1.ActiveSheetView)
            Else
                cancelgroup(FpSpread1.ActiveSheetView)
            End If
        End If
    End Sub
End Class

<%@ Page MasterPageFile="~/MasterPage.master" Language="c#" AutoEventWireup="true" 
         Inherits="addgroup" CodeFile="addgroup.aspx.cs" %>

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

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <asp:DropDownList ID="DropDownList1" runat="server" onchange="grouping(this[this.selectedIndex].value);">
        <asp:ListItem Value="0">グループ化の実行</asp:ListItem>
        <asp:ListItem Value="1">グループ化の解除</asp:ListItem>
    </asp:DropDownList>
    <FarPoint:FpSpread ID="FpSpread1" runat="server" BorderColor="#A0A0A0" BorderStyle="Solid"
        BorderWidth="1px" onbuttoncommand="FpSpread1_ButtonCommand">
        <CommandBar BackColor="#F6F6F6" ButtonFaceColor="Control" ButtonHighlightColor="ControlLightLight"
            ButtonShadowColor="ControlDark">
        </CommandBar>
        <Sheets>
            <FarPoint:SheetView SheetName="Sheet1">
            </FarPoint:SheetView>
        </Sheets>
    </FarPoint:FpSpread>
</asp:Content>