|
コードからのグループ化
データモデルからグループデータモデルオブジェクトを取得し、
Group メソッドを実行することで、コーディングによるグループ化を行うことができます。
また、グループデータモデルのTargetModelプロパティを使用して、
グループ化されたデータモデルをオリジナルのデータモデルに戻すことでグループ化を解除できます。
このサンプルでは、ラジオボタンの選択により、「部署」列でのグループ化とグループ化の解除を実行します。
| ID | 氏名 | カナ | 生年月日 | 性別 | 血液型 | 入社日 | メールアドレス |
1 |
部署: 人事部
|
2 | 1003 | 小和瀬 澄 | オワセ キヨ | 1969/03/06 | 男 | A | 1991/04/01 | kiyo_owase@aaa.co.jp |
3 | 1004 | 宇夫 早余子 | ウブ サヨコ | 1976/07/28 | 女 | O | 1998/04/01 | sayoko_ubu@bbb.or.jp |
4 | 1001 | 亀甲 滋万 | キコウ シゲマ | 1950/02/04 | 男 | A | 1972/04/01 | sigema_kikou@abc.co.jp |
5 | 1002 | 寒田 希世 | カンダ キヨ | 1959/06/28 | 女 | B | 1981/04/01 | kiyo_kanda@bbb.or.jp |
6 |
部署: 営業部
|
7 | 1011 | 稲並 勝五郎 | イナミ ショウゴロウ | 1962/02/18 | 男 | A | 1984/04/01 | shougorou_inami@bbb.or.jp |
8 | 1012 | 穎原 紀代一 | エイハラ キヨカズ | 1965/02/13 | 男 | O | 1987/04/01 | kiyokazu_eihara@bbb.or.jp |
9 | 1007 | 石ヶ休 椎茄 | イシガキュウ シイナ | 1953/02/21 | 男 | O | 1975/04/01 | siina_isigagyuu@abc.co.jp |
10 | 1006 | 茨城 昭児 | イバラキ ショウジ | 1963/04/28 | 男 | O | 1985/04/01 | shouzi_ibaraki@xyz.ne.jp |
11 | 1005 | 宇田津 聖智 | ウダツ キヨトモ | 1965/09/04 | 男 | A | 1987/04/01 | kiyotomo_udatu@abc.co.jp |
12 |
部署: 経理部
|
13 | 1008 | 赤司 恵治郎 | アカツカサ ケイジロウ | 1968/08/02 | 男 | O | 1990/04/01 | keizirou_akatukasa@abc.co.jp |
14 | 1009 | 小橋 仰一 | オハシ ギョウイチ | 1972/03/02 | 男 | B | 1994/04/01 | gyouiti_ohasi@abc.co.jp |
15 | 1010 | 一重 公大 | イチジュウ コウダイ | 1964/04/19 | 男 | B | 1986/04/01 | koudai_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>
|
|
|
|