我正在玩日历控件,我似乎无法完成着色日期的简单任务。如果用户输入7个日期,我想在日历上对这些日期进行着色,以便用户知道他们已被选中。
基本上我想做Calendar.HighlightDate(“5/1/11”)=>想象大声笑我知道这一定很简单,但我通过MSDN上的属性而没有找到任何东西。
答案 0 :(得分:5)
设置日历对象的 ondayrender 事件:
<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)
这是我在LONG TIME之前在项目中使用的一些代码。现在可能有更好的方法。但这应该有效。我能找到的最简单的方法就是参加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;
}
}
}
}