最近在做一个教学管理系统要用Calendar显示哪天上课以当前日期为分隔点,前后的日期样式不同,查了好多资料,才搞定它,遂记录下来供大家参考.
Calendar控件在web页面上加载的方式是逐一将日期显示出来的,在Calendar控件中有个DayRender事件,该事件是在Calendar显示日期的时候激发的,所以可以在这个事件里写改变Calendar的日期的样式,或者是每个星期几的样式!但这里的样式似乎不能用CSS的样式来控制,只能C#里Style的来控制!
protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
//当前日期的背景
Style DateNoewStyle = new Style();
DateNoewStyle.BackColor = System.Drawing.Color.AliceBlue;
//已经上课的日期背景
Style DateClassStyle = new Style();
DateClassStyle.BackColor = System.Drawing.Color.Green;
//没有上课的日期
Style DateNoClassStyle = new Style();
DateNoClassStyle.BackColor = System.Drawing.Color.GreenYellow;
//dates数组是用来接受从数据库里查出来时间的
string []dates=new string[2];
if( dtTime!= null && dtTime.Rows.Count > 0)
{
dates[0] = dtTime.Rows[0][0].ToString();
dates[1] = dtTime.Rows[0][1].ToString();
if (e.Day.Date.DayOfWeek.ToString()== dates[0] )
{
if (e.Day.Date > DateTime.Now.Date)
{
e.Cell.ApplyStyle(DateNoClassStyle);
}
else
{
e.Cell.ApplyStyle(DateClassStyle);
}
}
if (e.Day.Date.DayOfWeek.ToString() == dates[1])
{
if (e.Day.Date > DateTime.Now.Date)
{
e.Cell.ApplyStyle(DateNoClassStyle);
}
else
{
e.Cell.ApplyStyle(DateClassStyle);
}
}
}
}