属性名称 | 分类 | 是否常用 | 说明 |
IsGroupAboveData | 分类汇总 | 是 | 逻辑型,该属性决定汇总模式下,分组行是否位于数据行之前,默认为False,设为True,分组行将位于数据行之前 |
IsTreeVisible | 分类汇总 | 是 | 逻辑型,该属性决定在汇总模式下是否显示目录树,默认为False,设为True,将显示目录树 |
IsSubtotal | 分类汇总 | 是 | 逻辑型,判断Table是否处于汇总模式 |
SubtotalGroups | 分类汇总 | 是 | 集合,包括汇总模式下的各个分组设置 |
AllowEditWhenSubtotal | 分类汇总 | 是 | 当分类汇总时是否允许用户编辑数据。 |
Subtotal(Boolean) | 统计 | 根据现有的分组设置生成汇总模式 |
SubtotalByName | 统计 | 根据分类汇总名称来统计数据。 |
如果在已经设置了相应的默认数据汇总的情况下,我们可以用非常简单方式直接按照分类汇总名称来应用相应的设置。
Dim tbl As SmGrid=Proj.CurrentSmGrid tbl.SubtotalByName("Test")
执行之后就完成的统计。
下面演示如何用代码手动实现上面的功能。
Vb.Net |
Dim tbl As SmGrid = Proj.CurrentSmGrid '设置是否显示目录树 tbl.IsTreeVisible = True '分组行是否位于数据行之前 tbl.IsGroupAboveData = True '是否允许编辑数据 tbl.AllowEditWhenSubtotal = False '在统计之前先清空之前的统计 tbl.SubtotalGroups.Clear() '定义一个汇总分组 Dim group As SubtotalGroup = New SubtotalGroup() '设置统计的类型 group.Aggregate = AggregateEnum.Sum '设置目录树节点的层级 group.Level = 0 '基于哪个列进行分组 group.GroupOn ="客户" '统计列,可以有多列,中间用“,”分隔开。 group.TotalOn = "数量,金额" '统计行的标题,{0}代表分组记录的值 group.Caption = "{0}小计" '将汇总分组添加到最后的集合当中 tbl.SubtotalGroups.Add(group) group = New SubtotalGroup() '设置统计的类型 group.Aggregate = AggregateEnum.Sum '设置目录树节点的层级 group.Level = 1 '基于哪个列进行分组 group.GroupOn ="产品" '统计列,可以有多列,中间用“,”分隔开。 group.TotalOn = "数量,金额" '统计行的标题,{0}代表分组记录的值 group.Caption = "{0}小计" '将汇总分组添加到最后的集合当中 tbl.SubtotalGroups.Add(group) group = New SubtotalGroup() '设置统计的类型 group.Aggregate = AggregateEnum.Sum '设置目录树节点的层级 group.Level = 2 '基于哪个列进行分组 group.GroupOn ="业务员" '统计列,可以有多列,中间用“,”分隔开。 group.TotalOn = "数量,金额" '统计行的标题,{0}代表分组记录的值 group.Caption = "{0}小计" '将汇总分组添加到最后的集合当中 tbl.SubtotalGroups.Add(group) '开始统计 tbl.Subtotal(False) |
C# |
SmGrid tbl = Proj.CurrentSmGrid; // 设置是否显示目录树 tbl.IsTreeVisible = true; // 分组行是否位于数据行之前 tbl.IsGroupAboveData = true; // 是否允许编辑数据 tbl.AllowEditWhenSubtotal = false; // 在统计之前先清空之前的统计 tbl.SubtotalGroups.Clear(); // 定义一个汇总分组 SubtotalGroup group = new SubtotalGroup(); // 设置统计的类型 group.Aggregate = AggregateEnum.Sum; // 设置目录树节点的层级 group.Level = 0; // 基于哪个列进行分组 group.GroupOn = "客户"; // 统计列,可以有多列,中间用“,”分隔开。 group.TotalOn = "数量,金额"; // 统计行的标题,{0}代表分组记录的值 group.Caption = "{0}小计"; // 将汇总分组添加到最后的集合当中 tbl.SubtotalGroups.Add(group); group = new SubtotalGroup(); // 设置统计的类型 group.Aggregate = AggregateEnum.Sum; // 设置目录树节点的层级 group.Level = 1; // 基于哪个列进行分组 group.GroupOn = "产品"; // 统计列,可以有多列,中间用“,”分隔开。 group.TotalOn = "数量,金额"; // 统计行的标题,{0}代表分组记录的值 group.Caption = "{0}小计"; // 将汇总分组添加到最后的集合当中 tbl.SubtotalGroups.Add(group); group = new SubtotalGroup(); // 设置统计的类型 group.Aggregate = AggregateEnum.Sum; // 设置目录树节点的层级 group.Level = 2; // 基于哪个列进行分组 group.GroupOn = "业务员"; // 统计列,可以有多列,中间用“,”分隔开。 group.TotalOn = "数量,金额"; // 统计行的标题,{0}代表分组记录的值 group.Caption = "{0}小计"; // 将汇总分组添加到最后的集合当中 tbl.SubtotalGroups.Add(group); // 开始统计 tbl.Subtotal(false); |