如何在DataGrid中显示分组数据? – 摘要行

我有这门课:

public enum KindOfPerson { Student, Teacher, ... } public class Person { // This contains only numbers between 0 and 1 public double ScorePercent { get; set; } public KindOfPerson Type { get; set; } } 

我有一个人员列表,然后我应用这个LINQ函数,得到另一个由KindOfPerson分类的列表,并计算属于该KindOfPerson的所有人的平均得分:

 var groupedLists = peopleList.GroupBy(person => person.Type) .OrderBy(group => group.Key) .Select(group => new { People = group.ToList(), AverageScore = group.Average(p => p.ScorePercent) }) .ToList(); 

我想在DataGrid中显示这个列表,但我不知道这样做。

我正在尝试这样做:

[DATAGRID]

学生平均分:XXX

  • 分数1

  • 分数2

老师平均分:YYY

  • 分数1

  • 分数2

像那样的东西,咕噜咕噜。

UPDATE

我认为这段代码可以帮助我们: http : //leeontech.wordpress.com/2010/02/01/summary-row-in-datagrid/

在这里,您可以找到有关如何使用DataGrid进行分组的示例。 这是关于如何实现分组的另一个链接。

原则上它就像所有可分组的WPF控件一样。 但请注意,如果使用分组function,DataGrid将失去UI虚拟化的function。 因此,创建包含分组数据的大型列表通常不是一个好主意。

对于模型,我建议您创建用于每个行项目的视图模型。 此VM提供所有必需属性,例如ScorePercent1,ScorePercent2以及分组标题。

您需要使用不同类型的视图,例如TreeView,或者您需要在DataGrid中有一个列,其中包含DataGrid中每行的另一个DataGrid(或其他数据容器)。

根据您要展示的内容,看起来TreeView真的是您正在寻找的东西。

如果你能够使用第三方组件,我会建议来自Telerik的RadGrid。 它内置了分组/细节function。

如果您需要免费的东西,可以查看以下链接:

http://www.vbknowledgebase.com/?Id=125&Desc=Asp.Net-Hierarchical-GridView