【发布时间】:2025-12-26 16:00:18
【问题描述】:
当我按列 [Col] 对超网格进行分组时,我想按行获取分组的计数,我的意思是在按列 [Col] 分组之后,最终可能会出现两个逐行分组。如何按行获取组的计数?
【问题讨论】:
-
如果你想澄清你的意思,我不清楚“可能最终会出现两组逐行”这句话 :)
标签: ultrawingrid
当我按列 [Col] 对超网格进行分组时,我想按行获取分组的计数,我的意思是在按列 [Col] 分组之后,最终可能会出现两个逐行分组。如何按行获取组的计数?
【问题讨论】:
标签: ultrawingrid
在分组完成后,Grid 的 Rows 集合将包含 GroupByRows,因此您可以检查 grid.Rows.Count。
【讨论】:
对于整个网格,我能够获取所有*行的所有 ChildBands,然后计算它们拥有的 IsGroupByRow 行数:
var childBands = UltraGrid1.Rows.SelectMany(x => x.ChildBands.Cast<UltraGridChildBand());
var allChildRows = childBands.SelectMany(y => y.Rows));
var groupByRowCount = allChildRows.Count(x => x.IsGroupByRow);
如果您有要检查的特定行,可以执行以下操作:
var childBands = specificRow.ChildBands.Cast<UltraGridChildBand>();
var groupByRowCount = childBands.SelectMany(x => x.Rows).Count(x => x.IsGroupByRow)
这感觉就像是一种真正迂回的方式来获取子行对象......肯定有更好的方式。
如果您按多列分组,我的示例将不起作用。问题似乎在于,引用this post 中的 Mike Saltzman 的话:
GroupByRow 永远不会有 ChildBands 集合。 ChildBand 仅存在于数据行上。您需要做的是将该行转换为 UltraGridGroupByRow 并使用 Rows 集合获取其子行。
有一个example on Infragistics website,我相信它与您正在寻找的内容非常接近。
【讨论】: