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

时间:2011-08-09 15:32:03

标签: c# wpf oop

我上过这堂课:

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

  • SCORE PERCENT 1

  • SCORE PERCENT 2

老师平均分:YYY

  • SCORE PERCENT 1

  • SCORE PERCENT 2

类似的东西,咕噜咕噜。

更新

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

3 个答案:

答案 0 :(得分:3)

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

主要是在所有可分组的WPF控件中完成。但请注意,如果使用分组功能,DataGrid将失去UI虚拟化的功能。因此它通常不是一个 使用分组数据创建大型列表的好主意。

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

如果您能够使用第三方组件,我会建议Telerik的RadGrid。它内置了分组/详细功能。

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

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