下面先熟悉下Calarder控件的常用属性:
SelectionMode:是指定是否可选择天、周、整月,是一个CalendarSelectionMode枚举;
SelectedDate:是得到或设置当前选择的时间,是一个DateTime结构;
VisibleDate:是得到或设置日历显示的日期,是一个DateTime结构;
PrevMonthText:是切换上个月的符号,可以用‘上个月’表示,是string类型;
NextMonthText:是切换下个月的符号,可以用‘下个月’表示,是string类型;
SelectMonthText:是显示选择整个月的符号,可以用‘选择整月’表示,是string类型;
SelectWeekText:是显示选择整个周的符号,可用‘选择’表示,是string类型;
ShowGridLines:是否显示出网格线,是Boolean类型;
常用事件:
SelectionChanged:当选择一个日期时触发;
DayRender:当在加载日历控件时触发,相当于OnRender事件;
VisibleMonthChanged:只要对月份进行操作都触发;
下面进入正题,怎么实现自定义日历控件:
1.在Page_Init方法中实例化个String型二维数组分别是以月份和天数做长度,再把对应日期的节日写出来以便后面显示,如:
代码如下 | 复制代码 |
private string[][] arr; protected void Page_Init(object sender, EventArgs e) |
2.主要在DayRender事件进行操作;
代码如下 | 复制代码 |
protected void Calendar3_DayRender(object sender, DayRenderEventArgs e) { CalendarDay day = e.Day;//设置当前日期 TableCell cells = e.Cell;//设置表格 if (day.IsOtherMonth)//如果是其它节内容就清除本节内容Calendar是个日期限制的; { cells.Controls.Clear(); } else { try { string txt = arr[day.Date.Month][day.Date.Day];//得到完整的月、日与数组进行匹配 if (!string.IsNullOrEmpty(txt))//判断当前是否有节日 { cells.Controls.Add(new LiteralControl(string.Format(" {0}", txt)));//把这个 红色的字符串 加在显示的日期后面 } } catch (Exception) { Response.Write(" 页面错误!");} } } |
到了这里就可完成显示了,但我们想得到博客园那样显示出链接的日历,比如:今天发了篇博客,就要把今天的日期高亮显示并具有超链接,那又该怎么实现呢?第二篇博客再讲述。