asp.NET Calarder日历控件支持节日提示

作者:袖梨 2022-06-25

下面先熟悉下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)//如果是其它节内容就清除本节内容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("

页面错误!

");
                }
            }
        }

到了这里就可完成显示了,但我们想得到博客园那样显示出链接的日历,比如:今天发了篇博客,就要把今天的日期高亮显示并具有超链接,那又该怎么实现呢?第二篇博客再讲述。

相关文章

精彩推荐