找回密码
 立即注册

QQ登录

只需一步,快速开始

iceman

社区贡献组

270

主题

1万

帖子

1万

积分

社区贡献组

积分
19311

活字格认证微信认证勋章元老葡萄

iceman
社区贡献组   /  发表于:2012-3-14 13:19  /   查看:6682  /  回复:3
使用 Spread 时我们经常会使用其分组功能 Group,这篇文章通过实例给大家介绍 Spread 分组功能。

1.设置 Spread 相关属性
  1. private void InitSpread()
  2.         {
  3.             //设置表单行列数
  4.             this.fpSpread1.Sheets[0].ColumnCount = 8;
  5.             this.fpSpread1.Sheets[0].RowCount = 10;

  6.             //设置表单数据。
  7.             SheetView sheet = fpSpread1.ActiveSheet;

  8.             sheet.Cells.Get(0, 4).Value = 15;
  9.             sheet.Cells.Get(1, 4).Value = 15;
  10.             sheet.Cells.Get(2, 4).Value = 15;
  11.             sheet.Cells.Get(3, 4).Value = 35;
  12.             sheet.Cells.Get(4, 4).Value = 35;
  13.             sheet.Cells.Get(5, 4).Value = 35;
  14.             sheet.Cells.Get(6, 4).Value = 60;
  15.             sheet.Cells.Get(7, 4).Value = 60;
  16.             sheet.Cells.Get(8, 4).Value = 60;


  17.         }
复制代码
2.开启 Spread 分组功能:
  1. fpSpread1.AllowColumnMove = true;
  2.             fpSpread1.ActiveSheet.AllowGroup = true;
复制代码
3.设置 GroupBar 可见性,GroupBar 即为分组区域
  1. GroupBarInfo groupBarInfo = new GroupBarInfo();
  2.             groupBarInfo.BackColor = Color.LightBlue;
  3.             groupBarInfo.ForeColor = Color.Red;
  4.             groupBarInfo.Height = 50;
  5.             groupBarInfo.Visible = true;
  6.             this.fpSpread1.Sheets[0].GroupBarInfo = groupBarInfo;
复制代码
4.设置分组样式
  1. FarPoint.Win.Spread.GroupInfo groupInfo = new FarPoint.Win.Spread.GroupInfo();
  2.             groupInfo.Indent = 10;
  3.             groupInfo.IndentColor = Color.Red;
  4.             fpSpread1.ActiveSheet.GroupInfos.Add(groupInfo);
复制代码
5.设置分组脚可见性。
  1. fpSpread1.Sheets[0].GroupFooterVisible = true;
复制代码
6.添加默认分组列
  1.   /// <summary>
  2.         /// 添加分组脚,设置分组脚中公式
  3.         /// </summary>
  4.         private void CreateGroupFooter()
  5.         {
  6.             // 添加默认分组列
  7.             SheetView sheet = fpSpread1.ActiveSheet;

  8.             GroupDataModel groupData = new GroupDataModel(sheet.Models.Data);
  9.             sheet.Models.Data = groupData;

  10.             //SortInfo 构造函数 SortInfo(0, true) 中第一个参数为用于分组的列索引。
  11.             SortInfo[] sort = new SortInfo[] { new SortInfo(4, true) };
  12.             groupData.Group(sort, null);

  13.             //设置默认分组
  14.             DefaultGroupFooter groupFooter = fpSpread1.Sheets[0].DefaultGroupFooter[4];
  15.             ISheetDataModel dataModel = groupFooter.DataModel;

  16.             //设置分组脚中公式
  17.             (dataModel as IAggregationSupport).SetCellAggregationType(0, 3, AggregationType.Count);
  18.             (dataModel as IAggregationSupport).SetCellAggregationFormat(0, 3, "数量:{0}");
  19.             (dataModel as IAggregationSupport).SetCellAggregationType(0, 4, AggregationType.Sum);
  20.             (dataModel as IAggregationSupport).SetCellAggregationFormat(0, 4, "合计:{0}");
  21.             fpSpread1.ActiveSheet.GroupFooterVisible = true;

  22.             FarPoint.Win.Spread.FpSpread spread = this.fpSpread1;
  23.             FarPoint.Win.Spread.Model.GroupDataModel gm;

  24.             //更改分组 Text 内容
  25.             if (spread.ActiveSheet.Models.Data.GetType() == typeof(FarPoint.Win.Spread.Model.GroupDataModel))
  26.             {
  27.                 gm = (FarPoint.Win.Spread.Model.GroupDataModel)spread.Sheets[0].Models.Data;
  28.                  for (int i = 0; i < gm.Groups.Count; i++)
  29.                 {
  30.                     try
  31.                     {

  32.                         FarPoint.Win.Spread.Model.Group g;
  33.                         g = gm.Groups[i] as FarPoint.Win.Spread.Model.Group;
  34.                         int row = g.Rows.Count;
  35.                         if (g != null)
  36.                         {
  37.                             g.Text = g.GroupFooter.DataModel.GetValue(0, 4).ToString();
  38.                         }
  39.                     }
  40.                     catch (Exception)
  41.                     {

  42.                     }
  43.                 }
  44.             }
  45.         }
复制代码
截图展示:

png

png



样式 Demo 下载:
测试环境:VS 2008 &amp;&amp; Spread for WinForm 5.0 中文版
columnfooter.rar (68.83 KB, 下载次数: 563)

3 个回复

倒序浏览
szpzr
高级会员   /  发表于:2021-4-18 10:39:50
沙发
版主:
        重复点击“创建分组”按钮时在语句:sheet.Models.Data = groupData;
        出现错误:不支持IGroupSupport对象作为新数据模型的目标对象。
        如何解决?
     
        
捕获.JPG
回复 使用道具 举报
szpzr
高级会员   /  发表于:2021-4-18 13:34:47
板凳
有关帖子中找到,问题已解决。谢谢
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-4-19 00:13:21
地板
好的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部