Calendar 控件显示一个日历,用户可通过该日历导航到任意一年的任意一天。当 ASP.NET 网页运行时,Calendar 控件以 HTML 表格的形式呈现。因此,该控件的许多属性与多种不同的表格格式相符。在这些属性中,有几个在一些低版本的浏览器中不能得到完全支持,因此在这些浏览器中并不能使用所有的格式功能。
使用 Calendar 控件在网页上显示日历的单个月。该控件使您可以选择日期并移到下个月或上个月。Calendar 控件支持 System.Globalization 命名空间中的所有 System.Globalization.Calendar 类型。除公历以外,这还包括使用不同年和月系统的日历,如 Hjiri 日历。
可以通过设置 SelectionMode 属性指定 Calendar 控件是否允许选择单日、周或整月。
默认情况下,该控件显示月中各天、周中各天的标头、带有月份名和年份的标题、用于选择月份中各天的链接及用于移动到下个月和上个月的链接。您可以通过设置控制控件中不同部分的样式的属性,来自定义 Calendar 控件的外观。下表列出了指定控件不同部分的样式的属性。
属性 说明
DayHeaderStyle | 为显示一周中各天的部分指定样式。 |
DayStyle | 为显示的月份中的日期指定样式。 |
NextPrevStyle | 为标题部分中的导航控件指定样式。 |
OtherMonthDayStyle | 为不在当前显示的月份中的日期指定样式。 |
SelectedDayStyle | 为日历中的选定日期指定样式。 |
SelectorStyle | 为周和月份日期选择列指定样式。 |
TitleStyle | 为标题部分指定样式。 |
TodayDayStyle | 为今天日期指定样式。 |
WeekendDayStyle | 为周末日期指定样式。 |
也可以显示或隐藏控件的不同部分。下表列出控制显示或隐藏哪些部分的属性。
ShowDayHeader | 显示或隐藏显示一周中各天的部分。 |
ShowGridLines | 显示或隐藏月中各天之间的网格线。 |
ShowNextPrevMonth | 显示或隐藏指向下个月或上个月的导航控件。 |
ShowTitle | 显示或隐藏标题部分。 |
尽管 Calendar 控件不支持绑定到数据源,但是可以修改各个日期单元格的内容和格式设置。在网页上显示 Calendar 控件之前,它创建并汇编组成该控件的组件。当创建 Calendar 控件中的每个日期单元格时,均会引发 DayRender 事件。通过在 DayRender 事件的事件处理程序中提供代码,可以在创建日期单元格时控制其内容和格式设置。
Calendar 控件将 ECMAScript(JScript、JavaScript)呈现给客户端浏览器。客户端浏览器必须启用 ECMAScript,此控件才能正常工作。
下面的代码示例演示如何在网页上创建 Calendar 控件。
前台代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Calendar.aspx.cs" Inherits="WebControls_Calendar" %> <!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> <style type="text/css"> .style1 { width: 369px; } </style> </head> <body> <form id="form1" runat="server"> <div> <h3>Calendar(日期控件)</h3> <table> <tr> <td> 属性</td> <td> 值</td> <td> 作用</td> </tr> </table> <hr /> 请选择日期:<asp:Calendar ID="calDate" runat="server"></asp:Calendar> <asp:Button ID="btnSubmit" runat="server" Text="提交" /> <hr /> 请选的日期为:<asp:Label ID="lblState" runat="server"></asp:Label> <br /> <br /> 本地日期和时间为:<asp:Label ID="lblBenDiShiJian" runat="server"></asp:Label> </div> </form> </body> </html>
后台代码:
using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class WebControls_Calendar : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { lblBenDiShiJian.Text = System.DateTime.Now.ToString(); } protected void btnSubmit_Click(object sender, EventArgs e) { lblState.Text = calDate.SelectedDate.ToShortDateString(); } }
显示效果:
请选的日期为:2013-03-13
本地日期和时间为:2013-03-06 10:22:23