#c# #asp.net #calendar
#c# #asp.net #Календарь
Вопрос:
Я играюсь с элементом управления календарем и, похоже, не могу выполнить простую задачу по затенению дат. Если пользователь вводит 7 дат, я хочу затенить эти даты в календаре, чтобы пользователь знал, что они были выбраны.
По сути, я хочу сделать календарь.HighlightDate («5/1/11») => imaginary lol Я знаю, что это должно быть просто, но я просматриваю свойства в MSDN и ничего не нахожу.
Ответ №1:
Установите событие ondayrender для объекта calendar:
<asp:Calendar ID="Calendar1" runat="server" ondayrender="MyDayRenderer">
Затем в вашем коде вы можете проверить дату и задать цвет:
protected void MyDayRenderer(object sender, DayRenderEventArgs e)
{
if (e.Day.IsToday)
{
e.Cell.BackColor = System.Drawing.Color.Aqua;
}
if (e.Day.Date == new DateTime(2011,5,1))
{
e.Cell.BackColor = System.Drawing.Color.Beige;
}
}
Комментарии:
1. Прости, Джон, я вошел в систему и просто увидел первый ответ, у меня была беспокойная неделя
Ответ №2:
Вот некоторый код, который я использовал в проекте ДАВНЫМ-давно. Возможно, сейчас есть способ получше. Но это должно сработать. Самый простой способ, который я смог найти, это погрузиться в событие dayRender.
Я использовал это, чтобы выделить определенные дни, которые были забронированы, ожидающие рассмотрения или доступные для аренды недвижимости.
protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
for (int x = 0; x < ar.Count; x )
{
//if the date is in the past, just mark it as booked.
if (e.Day.Date < DateTime.Now)
{
e.Cell.BackColor = System.Drawing.Color.FromArgb(38, 127, 0);
e.Cell.ForeColor = System.Drawing.Color.White;
}
if (e.Day.Date.ToShortDateString() == Convert.ToDateTime(((ListItem)ar[x]).Text).ToShortDateString())
{
switch (((ListItem)ar[x]).Value)
{
case "1":
e.Cell.BackColor = System.Drawing.Color.FromArgb(220,220,220);
break;
case "2":
e.Cell.BackColor = System.Drawing.Color.FromArgb(38,127,0);
e.Cell.ForeColor = System.Drawing.Color.White;
break;
case "3":
if (e.Day.IsWeekend)
{
e.Cell.BackColor = System.Drawing.Color.FromArgb(255,255,204);
}
else
{
e.Cell.BackColor = System.Drawing.Color.White;
}
break;
default:
e.Cell.BackColor = System.Drawing.Color.White;
break;
}
}
}
}