Spread 分组功能解析

发布时间:2012/11/13 00:11 发布者:葡萄城产品团队

返回博客中心

使用 Spread 时我们经常会使用其分组功能 Group,这篇文章通过实例给大家介绍 Spread 分组功能。

1.设置 Spread 相关属性

 
private void InitSpread()

        {

            //设置表单行列数

            this.fpSpread1.Sheets[0].ColumnCount = 8;

            this.fpSpread1.Sheets[0].RowCount = 10;



            //设置表单数据。

            SheetView sheet = fpSpread1.ActiveSheet;



            sheet.Cells.Get(0, 4).Value = 15;

            sheet.Cells.Get(1, 4).Value = 15;

            sheet.Cells.Get(2, 4).Value = 15;

            sheet.Cells.Get(3, 4).Value = 35;

            sheet.Cells.Get(4, 4).Value = 35;

            sheet.Cells.Get(5, 4).Value = 35;

            sheet.Cells.Get(6, 4).Value = 60;

            sheet.Cells.Get(7, 4).Value = 60;

            sheet.Cells.Get(8, 4).Value = 60;





        }

复制代码

2.开启 Spread 分组功能:

 
fpSpread1.AllowColumnMove = true;

            fpSpread1.ActiveSheet.AllowGroup = true;

复制代码

3.设置 GroupBar 可见性,GroupBar 即为分组区域

 
GroupBarInfo groupBarInfo = new GroupBarInfo();

            groupBarInfo.BackColor = Color.LightBlue;

            groupBarInfo.ForeColor = Color.Red;

            groupBarInfo.Height = 50;

            groupBarInfo.Visible = true;

            this.fpSpread1.Sheets[0].GroupBarInfo = groupBarInfo;

复制代码

4.设置分组样式

 
FarPoint.Win.Spread.GroupInfo groupInfo = new FarPoint.Win.Spread.GroupInfo();

            groupInfo.Indent = 10;

            groupInfo.IndentColor = Color.Red;

            fpSpread1.ActiveSheet.GroupInfos.Add(groupInfo);

复制代码

5.设置分组脚可见性。

 
fpSpread1.Sheets[0].GroupFooterVisible = true;

复制代码

6.添加默认分组列

  1.  
    /// <summary>
    
            /// 添加分组脚,设置分组脚中公式
    
            /// </summary>
    
            private void CreateGroupFooter()
    
            {
    
                // 添加默认分组列
    
                SheetView sheet = fpSpread1.ActiveSheet;
    
    
    
                GroupDataModel groupData = new GroupDataModel(sheet.Models.Data);
    
                sheet.Models.Data = groupData;
    
    
    
                //SortInfo 构造函数 SortInfo(0, true) 中第一个参数为用于分组的列索引。
    
                SortInfo[] sort = new SortInfo[] { new SortInfo(4, true) };
    
                groupData.Group(sort, null);
    
    
    
                //设置默认分组
    
                DefaultGroupFooter groupFooter = fpSpread1.Sheets[0].DefaultGroupFooter[4];
    
                ISheetDataModel dataModel = groupFooter.DataModel;
    
    
    
                //设置分组脚中公式
    
                (dataModel as IAggregationSupport).SetCellAggregationType(0, 3, AggregationType.Count);
    
                (dataModel as IAggregationSupport).SetCellAggregationFormat(0, 3, "数量:{0}");
    
                (dataModel as IAggregationSupport).SetCellAggregationType(0, 4, AggregationType.Sum);
    
                (dataModel as IAggregationSupport).SetCellAggregationFormat(0, 4, "合计:{0}");
    
                fpSpread1.ActiveSheet.GroupFooterVisible = true;
    
    
    
                FarPoint.Win.Spread.FpSpread spread = this.fpSpread1;
    
                FarPoint.Win.Spread.Model.GroupDataModel gm;
    
    
    
                //更改分组 Text 内容
    
                if (spread.ActiveSheet.Models.Data.GetType() == typeof(FarPoint.Win.Spread.Model.GroupDataModel))
    
                {
    
                    gm = (FarPoint.Win.Spread.Model.GroupDataModel)spread.Sheets[0].Models.Data;
    
                     for (int i = 0; i < gm.Groups.Count; i++)
    
                    {
    
                        try
    
                        {
    
    
    
                            FarPoint.Win.Spread.Model.Group g;
    
                            g = gm.Groups[i] as FarPoint.Win.Spread.Model.Group;
    
                            int row = g.Rows.Count;
    
                            if (g != null)
    
                            {
    
                                g.Text = g.GroupFooter.DataModel.GetValue(0, 4).ToString();
    
                            }
    
                        }
    
                        catch (Exception)
    
                        {
    
    
    
                        }
    
                    }
    
                }
    
            }
    
    复制代码
    截图展示:



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

关于葡萄城

赋能开发者!葡萄城是专业的集开发工具、商业智能解决方案、低代码开发平台于一身的软件和服务提供商,为超过 75% 的全球财富 500 强企业提供服务。葡萄城专注控件软件领域30年,希望通过模块化的开发控件、灵活的低代码应用开发平台等一系列开发工具、解决方案和服务,帮助开发者快速响应复杂多变的业务需求,最大程度地发挥开发者的才智和潜能,让开发者的 IT 人生更从容更美好。

了解详情,请访问葡萄城官网