Сложный отчёт с группировкой по строкам и столбцам
Добавлено: 28 мар 2019, 07:38
Добрый день.
Стоит задача сделать отчёт такого вида (см. вложение).
Данные для отчёта я формирую в C#, поэтому структуру данных можно сделать любую. Но я так и не смог понять, как можно построить такой отчёт в дизайнере. Мои соображения:
В этом случае я думал размещать DataBand верхнего уровня с источником ByCampaigns. На бэнде свойство Campaign и вложенный DataBand (в помощью панели) с источником Types. Далее рекурсия - внутри бэнда для Types наименование типа (Type) и панель с бэндом для Fields. Внутри бэнда Fields уже последний бэнд - собственно для строк с данными по ТС, агрегату и маршруту. Тут же можно попробовать разбить колонки по сменам с помощью CrossDataBand (но тут интуитивно - с этим я ещё не разбирался).
Может быть, у более опытных пользователей есть лучшие варианты решения проблемы? Заранее спасибо.
Стоит задача сделать отчёт такого вида (см. вложение).
Данные для отчёта я формирую в C#, поэтому структуру данных можно сделать любую. Но я так и не смог понять, как можно построить такой отчёт в дизайнере. Мои соображения:
- Можно делать простую структуру данных типа таблицы БД, то есть список строк со столбцами Кампания-Тип-ТС-Агрегат-Маршрут-Поля-Смена-ФИО1-ФИО2. В этом случае в дизайнере нужно как-то группировать эти строки сначала по кампании, потом по типу, потом по полям + размещать ФИО в одной строке по сменам. Кросс-таблица вроде не подходит - тут нет суммарных данных, просто группировка. Как по-другому можно сформировать такой вид отчёта при такой структуре данных я не понял.
- Можно делать сложную структуру данных, например:
Код: Выделить всё
public class Activity
{
public string TS { get; set; }
public string Aggregat { get; set; }
public string Route { get; set; }
public string Driver { get; set; }
public string Responsible { get; set; }
public string Smena { get; set; }
}
public class ByFields
{
public string Fields { get; set; }
public List<Activity> Activities { get; set; }
}
public class ByTypes
{
public string Type { get; set; }
public List<ByFields> Fields { get; set; }
}
public class ByCampaigns
{
public string Campaign { get; set; }
public List<ByTypes> Types { get; set; }
}
Может быть, у более опытных пользователей есть лучшие варианты решения проблемы? Заранее спасибо.