asp.net2.0里用Calendar控件做带节日提示的日历
1、建立网页CalendarThree.aspx,代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CalendarThree.aspx.cs" Inherits="CalendarThree" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Calendar ID="Calendar1" runat="server" OnDayRender="Calendar1_DayRender" Height="206px" Width="369px"></asp:Calendar>
</div>
</form>
</body>
</html>
2、CalendarThree.aspx.cs代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class CalendarThree : System.Web.UI.Page
{
String[][] holidays = new String[13][];
protected void Page_Load(object sender, EventArgs e)
{
for (int n = 0; n < 13; n++)
holidays[n] = new String[32];
holidays[1][1] = "元旦";
holidays[2][14] = "情人节";
holidays[3][8] = "妇女节";
holidays[3][12] = "植树节";
holidays[4][1] = "愚人节";
holidays[5][1] = "劳动节";
holidays[5][4] = "青年节";
holidays[5][12] = "护士节";
holidays[5][14] = "母亲节";
holidays[5][14] = "助残日";
holidays[6][1] = "国际儿童节";
holidays[6][5] = "环境保护日";
holidays[6][18] = "父亲节";
holidays[6][26] = "国际禁毒日";
holidays[7][1] = "中共诞辰";
holidays[8][1] = "建军节";
holidays[9][10] = "教师节";
holidays[10][1] = "国庆节";
holidays[11][23] = "感恩节";
holidays[12][1] = "艾滋病日";
holidays[12][12] = "西安事变";
holidays[12][25] = "圣诞节";
}
protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
CalendarDay d = ((DayRenderEventArgs)e).Day;
TableCell c = ((DayRenderEventArgs)e).Cell;
if (e.Day.IsOtherMonth)
{
e.Cell.Controls.Clear();
}
else
{
try
{
string Hol = holidays[e.Day.Date.Month][e.Day.Date.Day];
if (Hol != string.Empty)
e.Cell.Controls.Add(new LiteralControl("<br><font color=blue size=2>" + Hol + "</font>"));
}
catch (Exception exc)
{
Response.Write(exc.ToString());
}
}
}
}
3、运行的效果如下:
----------------------------------------------------------------------
示例2、
Calendar控件的基本用法(实现日期格式变换和定制节日)
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
private string [,] holiday=new string[12,31];//定义一个数组显示一年365天
protected void Page_Load(object sender, EventArgs e)
{
holiday[8, 2] = ”我靠,我成功了!";//令8月2日为特殊纪念日
}
//日期选择格式
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
string a = this.DropDownList1.SelectedValue;//a列表中选定项的值
switch (a)
{
case "day":
this.Calendar1.SelectionMode=CalendarSelectionMode.Day;//Calendar控件上选择单个日期
break;
case "month":
this.Calendar1.SelectionMode = CalendarSelectionMode.DayWeekMonth;//Calendar控件上选择单个日期,周或者月
break;
case "week":
this.Calendar1.SelectionMode = CalendarSelectionMode.DayWeek;//Calendar控件上选择单个日期或者整周
break;
case "none":
this.Calendar1.SelectionMode = CalendarSelectionMode.None;//Calendar控件上不能选择任何日期
break;
}
}
protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
CalendarDay d;//d为控件中的日期
TableCell c;//c为控件中的单元格
d = e.Day;//获取Calendar控件中的日期的CalendarDay对象
c = e.Cell;
if (d.IsOtherMonth)
c.Controls.Clear();//从当前服务器的System.Web.UI.ControlCollection对象中移除所有控件
else
try
{
string Hol;
Hol = holiday[d.Date.Month,d.Date.Day];//获取此实例表示日期的月和日期
if(Hol!="")
c.Controls.Add(new LiteralControl("<br> <font color=red>" + Hol+"</font>"));//将指定的System.Web.UI.Control对象添加到集合,并用指定的文本初始化System.Web.UI.LiteralControl类的新实例
}
catch(Exception exc)//捕获错误信息
{
Response.Write(exc.Message);
}
}