Нужно иметь сетку, сгруппированную в логические группы по дате - PullRequest
0 голосов
/ 03 июля 2011

Я имею дело с ситуацией, когда мне нужно сгруппировать свою сетку DevExpress на основе столбца даты. Проблема в том, что мне нужно, чтобы мои группы назывались: Прошлое, Текущее и Будущее. Вот LINQ:

GridJobSummary.DataSource = from luke in DbContext.JobBookings
            where luke.LocumID == LocumID
            orderby luke.Job.JobDate descending
            select new {
                luke.JobID,
                luke.Job.JobDate,
                ClientID = luke.Job.Branch.ClientID,
                ClientName = String.Format("{0} ({1})", luke.Job.Branch.Client.Name, luke.Job.Branch.Client.Number),
                BranchID = luke.Job.BranchID,
                BranchName = String.Format("{0} ({1})", luke.Job.Branch.Number, luke.Job.Branch.Number),
                JobBookingStatusName = luke.JobBookingStatus.Name
            };

GridJobSummaryView.Columns["JobID"].Visible = false;
GridJobSummaryView.Columns["ClientID"].Visible = false;
GridJobSummaryView.Columns["BranchID"].Visible = false;

GridJobSummaryView.Columns["JobDate"].DisplayFormat.FormatType = FormatType.DateTime;
GridJobSummaryView.Columns["JobDate"].DisplayFormat.FormatString = "ddd, dd-MMM-yyyy";
GridJobSummaryView.Columns["JobDate"].SortOrder = ColumnSortOrder.Ascending;

Теперь

Если [дата работы <Сегодня], она входит в группу <em>Past .

Если [дата работы> = Сегодня и <= (Сегодня + 1 месяц)], это <em>Текущий .

Если [дата работы> (сегодня + 1 месяц)], это Будущее .

Как я могу сгруппировать свою сетку в эту виртуальную группу? Привет.

1 Ответ

1 голос
/ 03 июля 2011

Добавить свойство "GroupName" к выбранным объектам:

select new {
                luke.JobID,
                luke.Job.JobDate,
                ClientID = luke.Job.Branch.ClientID,
                ClientName = String.Format("{0} ({1})", luke.Job.Branch.Client.Name, luke.Job.Branch.Client.Number),
                BranchID = luke.Job.BranchID,
                BranchName = String.Format("{0} ({1})", luke.Job.Branch.Number, luke.Job.Branch.Number),
                JobBookingStatusName = luke.JobBookingStatus.Name,
                GroupName = GetGroupNameByDate(luke.Job.JobDate)
            };

// .....
string GetGroupNameByDate(DateTime date) {
    var today = DateTime.Today;
    if ( date < today ) { return "Past"; }
    else if ( date >= today && date <= today.AddMonths( 1 ) ) { return "Current"; }
    else { return "Future"; }
}
...