自定义.NET Calarder日历控件1
这几天看了下.net 日历控件,去Google了下出来很多,大家都知道.netframework版本中自带的日历控件只有日期没有备注的,比如我在1月1日下面要显示出‘元旦节’这三个字,那要怎么做呢?
下面先熟悉下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)
{
arr = new string[13][] ;//分别为 月
for (int i = 0; i < 13; i++)
{
arr[i] =new string[32];//为年、月进行赋值
}
arr[1][1] = "元旦节";
arr[2][14] = "情人节";
arr[3][8] = "妇女节";
arr[3][20] = "姐姐的生日";
arr[3][12] = "植树节";
arr[4][16] = "妈妈的生日";
arr[4][29] = "我的生日";
arr[5][1] = "劳动节";
arr[6][1] = "儿童节";
arr[7][1] = "建党节";
arr[8][1] = "建军节";
arr[8][10] = "爸爸的生日";
arr[9][10] = "教师节";
arr[10][1] = "国庆节";
arr[12][24] = "平安夜";
arr[12][25] = "圣诞节";
}
2.主要在DayRender事件进行操作;
protected void Calendar3_DayRender(object sender, DayRenderEventArgs e)
{
CalendarDay day = e.Day;//设置当前日期
TableCell cells = e.Cell;//设置表格
if (day.IsOtherMonth)//如果是其它月的日期就清除
{
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("<br><font color=red>{0}</font>", txt)));//把这个 红色的字符串 加在显示的日期后面
}
}
catch (Exception)
{
Response.Write("<font color='red'><h1>页面错误!</h1></font>");
}
}
}
到了这里就可完成显示了,但我们想得到博客园那样显示出链接的日历,比如:今天发了篇博客,就要把今天的日期高亮显示并具有超链接,那又该怎么实现呢?第二篇博客再讲述。