找回密码
 立即注册

QQ登录

只需一步,快速开始

eric367

注册会员

18

主题

51

帖子

143

积分

注册会员

积分
143

活字格认证

eric367
注册会员   /  发表于:2013-9-24 09:53  /   查看:13932  /  回复:11
c1FlexGrid有没有计算分组小计和合计的功能?如何实现?

11 个回复

倒序浏览
gw0506
超级版主   /  发表于:2013-9-24 17:42:00
沙发
有的。安装在你机器的Samples中有一个Subtotals的示例可以参考。
开始菜单->所有程序->ComponentOne->Studio for WinForms->Samples->FlexGrid Samples->Subtotals。
回复 使用道具 举报
eric367
注册会员   /  发表于:2013-9-25 14:25:00
板凳
回复 2楼gw0506的帖子

你好,我现在要实现下面这个效果

但是现在出来是这种,第一列会重复,

如何实现?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-9-25 14:39:00
地板
可以将其合并:
  1.             this.c1FlexGrid1.AllowMerging = AllowMergingEnum.RestrictCols;
  2.             this.c1FlexGrid1.Cols[1].AllowMerging = true;
复制代码

或者你手动删除。
回复 使用道具 举报
eric367
注册会员   /  发表于:2013-9-25 15:42:00
5#
回复 4楼gw0506的帖子

合计一列的数据呢?必须自己算吗?还有上面的小计,我如何在合并完以后就知道在哪一行进行小计?
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-9-25 17:10:00
6#
这个问题之前和你讨论过。按照你效果图的样式,只能自己算是那一行,然后设值了。合计的工作可以用SubTotal完成。
回复 使用道具 举报
eric367
注册会员   /  发表于:2013-9-25 17:40:00
7#
回复 6楼gw0506的帖子

好吧,我看你们subTotal是这样用的
  1. // Sale Amount的总和。
  2. int totalOn = c1FlexGrid1.Cols["Sale Amount"].SafeIndex;
  3. string caption = "Total for {0}";
  4. // 计算三层的总和。
  5. c1FlexGrid1.Subtotal(AggregateEnum.Sum, 0, 1, totalOn, caption);
  6. c1FlexGrid1.Subtotal(AggregateEnum.Sum, 1, 2, totalOn, caption);
  7. c1FlexGrid1.Subtotal(AggregateEnum.Sum, 2, 3, totalOn, caption);
复制代码

这是用于树形那种,那我这种一列的怎么用?这些参数都是什么意思?

还有一个问题,
这个
  1. this.grdMei.Rows.Count
复制代码

不能根据数据的多少自动增加吗?必须要赋值?
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-9-26 10:06:00
8#
Subtotal的参数在文档中有描述:
http://helpcentral.componentone. ... exGrid_Subtotal.htm

Rows.Count是根据实际行数自动增加的。为了方便用户增加或者删除行,所以可以赋值。但不是必须的。
回复 使用道具 举报
eric367
注册会员   /  发表于:2013-9-26 11:08:00
9#
回复 8楼gw0506的帖子

  1. CellRange cr = new CellRange();
  2.             cr.r1 = 1;
  3.             cr.r2 = this.grdMei.Rows.Count;
  4.             cr.c1 = 1;
  5.             cr.c2 = this.grdMei.Cols.Count;
  6.             this.grdMei.Clear(ClearFlags.Style, cr);
  7.             this.grdMei.Clear(ClearFlags.Content, cr);
复制代码

为什么清除style时候
  1. this.grdMei.Clear(ClearFlags.Style, cr);
复制代码
会报错说是index超出范围,而这个清除内容的时候却正常?
  1. this.grdMei.Clear(ClearFlags.Content, cr);
复制代码
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-9-26 15:39:00
10#
你直接去Count就越界了。比如你有1行,Count是1,但是index是0。
  1.             CellRange cr = new CellRange();
  2.             cr.r1 = 1;
  3.             cr.r2 = this.grdMain.Rows.Count -1 ;
  4.             cr.c1 = 1;
  5.             cr.c2 = this.grdMain.Cols.Count -1;
复制代码
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部