2012-12-28 39 views
1

当我按列[Col]对Ultragrid进行分组时,我希望按行计算组的数量,我的意思是在组列[Col]之后,最终可能会出现两个逐行分组。我怎样才能得到行数的组数?GroupBy行的计数数

+0

如果你想澄清你的意思,那么短语“最终可能会出现两个一组一行”对我而言并不清楚:) –

回答

1

分组完成后,网格的行集合将包含GroupByRows,因此您可以检查grid.Rows.Count。

+0

如果你没有多个乐队(或者正在按照外部一列进行分组最乐队)这是最简单的,工作很棒! –

0

为整个网格我能够抓住所有的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引述麦克赵敏:

一个GroupByRow将永远不会有一个ChildBands集合。 ChildBands只存在于数据行上。你需要做的是将该行转换为UltraGridGroupByRow并使用Rows集合来获取其子行。

有一个example on Infragistics website,我相信它非常接近你正在寻找的东西。