C1FlexGrid for WinForms:创建分类汇总

C1FlexGrid.Subtotal方法可以增加包含普通(非小计)行的汇总数据的分类汇总行。分类汇总支持分层聚合。例如,如果你的表格包含销售数据,你可能会通过产品、地区和推销员来小计一下以得出总的销售数字。下面的代码说明了这一点:<img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.grapecity.com.cn/image.ashx?picture=image_thumb_327.png" width="610" height="383">

发布于 2014/01/15 00:00

ComponentOne Enterprise

C1FlexGrid.Subtotal方法可以增加包含普通(非小计)行的汇总数据的分类汇总行。

分类汇总支持分层聚合。例如,如果你的表格包含销售数据,你可能会通过产品、地区和推销员来小计一下以得出总的销售数字。下面的代码说明了这一点:

  1:         private void UpdateTotals()
  2:         {
  3:             // clear existing totals
  4:             _flex.Subtotal(AggregateEnum.Clear);
  5: 
  6:             // calculate subtotals (three levels, totals on every column)
  7:             for (int c = 3; c < _flex.Cols.Count; c++)
  8:             {
  9:                 if (_chkGrand.Checked)
 10:                     _flex.Subtotal(AggregateEnum.Sum, 0, -1, c, "各类产品合计");
 11:                 if (_chkDirection.Checked)
 12:                     _flex.Subtotal(AggregateEnum.Sum, 1, 1, c, "{0}合计");
 13:                 if (_chkRegion.Checked)
 14:                     _flex.Subtotal(AggregateEnum.Sum, 2, 2, c, "{0}方区域合计");
 15:             }
 16: 
 17:             // done, autosize columns to finish
 18:             _flex.AutoSizeCols();
 19:         }

代码中重要接口说明:

_flex.Tree.Column:获取或设置树形结构在哪一列显示。

_flex.Subtotal(AggregateEnum.Sum, -1, -1, 3, "Grand Total");

参数1:同时方式

参数2:当前树节点的级别,-1 为最外层节点

参数3:用于获取分组信息的列

参数4:统计的列

参数5:分组说明文本信息

即上述代码设置了三层分组,第一层为所有销售信息的汇总。第二层以产品类别分组,第三层以区域信息进行分组。

 

当C1FlexGrid.Subtotal方法添加了汇总信息行,它会自动分配汇总样式到新的行(有五个层级的分类汇总内置样式)。你可以使用“样式编辑器”或代码在设计器中改变大纲样式的属性,以此来自定义分类汇总行的外观。例如:

  1: // 设置分类汇总的样式。
  2: CellStyle cs; 
  3: cs = _flex.Styles[CellStyleEnum.GrandTotal]; 
  4: cs.BackColor = Color.Black; 
  5: cs.ForeColor = Color.White; 
  6: cs.Font = new Font(Font, FontStyle.Bold); 
  7: cs = _flex.Styles[CellStyleEnum.Subtotal0]; 
  8: cs.BackColor = Color.DarkRed; 
  9: cs.ForeColor = Color.White; 
 10: cs.Font = new Font(Font, FontStyle.Bold); 
 11: cs = _flex.Styles[CellStyleEnum.Subtotal1]; 
 12: cs.BackColor = Color.DarkBlue; 
 13: cs.ForeColor = Color.White; 
 14: 

执行此代码后,表格看起来是这样的:

image

除了总量之外,你也可以计算其他分类汇总(例如,平均值或百分比),并计算每一行的几个汇总(例如,毛销售额及净销售额)。

Demo 下载:

VS2010 + C# + Framework 4.0 + Studio for Winforms 2013V3 点击下载

VS2010 + VB.NET + Framework 4.0 + Studio for Winforms 2013V3 点击下载

关于葡萄城

葡萄城是专业的软件开发技术和低代码平台提供商,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。葡萄城开发技术始于1980年,40余年来始终聚焦软件开发技术,有深厚的技术积累和丰富的产品线。是业界能够同时赋能软件开发和低代码开发的企业。凭借过硬的产品能力、活跃的用户社区和丰富的伙伴生态,与超过3000家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。

相关产品
推荐相关案例
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态