VAIBHAV PANDYA Ответов: 1

Дата понедельника каждой недели отображается в виде заголовка столбца в виде сетки


Я хочу спроектировать сетку, которая содержит данные еженедельного выделенного проекта для каждого ресурса в ASP.Net MVC + C#

Пожалуйста, помогите мне разработать сеточную логику, где первый столбец-это имя сотрудника, а против первого столбца-еще 52 столбца, начиная с календарной недели 39 текущего года до календарной недели 38 следующего года, где имя заголовка каждого столбца-это дата-месяц понедельника этой недели.

например:

На 2017-18 год

заголовок столбца:

[Имя Сотрудника|25 Сентября|2 Октября|9 Октября|16 Октября|23 Октября|30 Октября|..........|10-Сентября|17 Сентября]
--------------------------------------------------------------------------------
[Vaibhav|ABC|ABC|ABC|ABC|ABC|ABC/...........|XYZ|XYZ]
--------------------------------------------------------------------------------
[Пандья|XYZ|XYZ|XYZ|XYZ|XYZ|...........|ABC|ABC]

Спасибо,

Что я уже пробовал:

Я новичок в этой концепции и логике представления сетки.

1 Ответов

Рейтинг:
11

Maciej Los

Все очень просто. Подумай об этом!
Представьте себе, что у вас есть сетка, которая привязана к DataTable. Все, что вам нужно сделать, это определить дату начала и дату окончания. Затем вы должны пройти цикл через 7 дней. Как же так? Пожалуйста смотрите:

CultureInfo myCi = CultureInfo.CurrentCulture;
Calendar myCal = myCi.Calendar;
CalendarWeekRule myCWR = myCi.DateTimeFormat.CalendarWeekRule;
//first Monday of year
DateTime firstMonday = new DateTime(DateTime.Today.Year, 1, 1, myCal);
firstMonday = firstMonday.AddDays(-(int)firstMonday.DayOfWeek + (int)DayOfWeek.Monday);
//start date
DateTime startDate = myCal.AddWeeks(firstMonday, 38);
//end date
DateTime endDate = myCal.AddYears(startDate, 1);
endDate = myCal.AddWeeks(endDate, -1);

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("EmpName", typeof(string)));
    //mondays
firstMonday = startDate;
while(firstMonday<endDate)
{
    dt.Columns.Add(new DataColumn(firstMonday.ToString("dd MMM yyyy", myCi), typeof(string)));
    firstMonday = firstMonday.AddDays(7);
}
//add employee name
dt.Rows.Add("Maciej Los");


Для получения более подробной информации, пожалуйста, смотрите:
Как извлечь день недели из определенной даты | Microsoft Docs[^]
Календарь.Метод AddWeeks (DateTime, Int32) (System.Глобализация)[^]


Member 13858616

Очень полезно... Спасибо вам ооочень большое

Maciej Los

Отлично!
Удачи вам!