Как показать данные группировки в DataGrid?- Сводная строка - PullRequest
2 голосов
/ 09 августа 2011

У меня есть этот класс:

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

Учитель СРЕДНИЙ СЧЕТ: ГГГ

  • СЧЕТ ПРОЦЕНТ 1

  • СЦЕН ПРОЦЕНТ 2

Что-то в этом роде.

ОБНОВЛЕНИЕ

Думаю, этот код может помочь нам: http://leeontech.wordpress.com/2010/02/01/summary-row-in-datagrid/

Ответы [ 3 ]

3 голосов
/ 09 августа 2011

Здесь вы найдете пример того, как группировка выполняется с помощью DataGrid. Здесь - еще одна ссылка о том, как реализовать группировку.

В принципе это делается как во всех группируемых WPF-элементах управления.Однако следует помнить, что DataGrid теряет возможность виртуализации пользовательского интерфейса, если вы используете функцию группировки.Поэтому обычно не рекомендуется создавать огромные списки со сгруппированными данными.

Для модели я рекомендую создать модель представления, которая будет использоваться для каждой позиции.Эта виртуальная машина предоставляет все необходимые свойства, такие как ScorePercent1, ScorePercent2, а также заголовок группировки.

0 голосов
/ 09 августа 2011

Если вы можете использовать компонент третьей части, я бы предложил RadGrid от Telerik. Он имеет встроенные возможности группирования / детализации.

Если вам нужно что-то бесплатное, вы можете проверить эту ссылку:

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

0 голосов
/ 09 августа 2011

Вам либо нужно использовать другой вид представления, например TreeView, либо в вашей DataGrid должен быть столбец, содержащий еще одну DataGrid (или другой контейнер данных) для каждой строки в DataGrid.

Исходя из того, что вы пытаетесь показать, кажется, что TreeView - это то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...