·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> ASP.NET - Calendar Web 服务器控件概述(上)

ASP.NET - Calendar Web 服务器控件概述(上)

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23
     可使用 Calendar Web 服务器控件显示日历中的可选日期,并显示与特定日期关联的数据。

一、方案

可以使用 Calendar Web 服务器控件执行下面的操作:

1、显示和选择日期   该控件显示一个日历,用户通过此日历可移动到任意一年中的任意一天。设置 SelectedDate 属性,使某个特定的日期在控件中突出显示。用户还可通过单击一个日或在不同的月份之间移动以移动到任意日期。还可将日历配置为允许用户选择多个日期,包括整周或整月。

显示十月份的 Calendar 控件的表示方法




      2、在日历网格中显示约会或其他信息   Calendar 控件可显示个别日的特定详细信息,如任务列表、事件时间表或类似的信息。此功能使您可以显示数据库中的日信息。



二、功能

可以使用 Calendar 控件执行下面的操作:

·捕获用户交互(例如在用户选择一个日期或一个日期范围时)。

·自定义日历的外观。

·在日历中显示数据库中的信息。



三、背景

Calendar 控件一次显示一个月份中的日期,同时共显示六周。该控件支持若干种日期类型,下表描述了这些日期类型。

日期类型
说明

TodaysDate
默认情况下,将它设置为与服务器上的当前日期匹配。但是,可调整它以显示不同区域设置的正确日期。

VisibleDate
此日期确定日历中显示哪个月份。在日历中,用户可在不同的月份之间移动,这将在不影响当前日期的情况下更改可视日期。通过以编程方式设置可视日期,可定位到不同的月份。

SelectedDate, SelectedDates
这是用户选择的日期或日期范围。在该控件中,用户可选择单个日、单个周或单个月份,但只能选择连续的日期。也可以以编程方式设置选定的日期。在这种情况下,可设置非连续的选定日期。



      Calendar 控件基于 DateTime 对象,因此支持该对象所允许的全部日期范围。您可有效地显示公元 0 年到 9999 年之间的任意日期。

在 asp.net 页上,Calendar 控件以 HTML 表的形式呈现。因此,该控件的一些属性与表的各种格式设置有关。一些较早的浏览器不完全支持其中的几个属性。因此,并不是所有的格式设置功能在这些浏览器中都可用。

      1、启用日期选定

默认情况下,日历允许用户单击个别日期以选定它。如果正在将控件用作只读日历,则可禁用日期选择功能。

如果启用了日期选择,则日历的每一天都包含一个 LinkButton 控件,当单击该控件时,会引发某个事件。如果启用了周选择或月份选择,则将一列链接添加到日历的一侧,以使用户能够指定要选择的周。

2、自定义日历的外观

可设置日历的属性以更改日历的颜色、尺寸、文本以及其他可视特性。有几种方法可实现此操作,如下表所示。

自定义方法
说明

设置属性
可设置属性以显示网格线,更改显示为一周的第一天的日,更改月份和日名称的外观。

设置扩展样式属性
可使用从 Style 对象派生的属性来设置日历中的特定元素的外观。这包括当前日期或包含月份和导航链接的标题栏。可使用级联式样式表的浏览器支持这些样式属性。而较早的浏览器只支持其中的一部分外观样式。

自定义个别日的呈现
当控件在呈现个别日时会引发一个事件,您可处理该事件以修改所呈现的流。这不仅对于更改日的外观有用,而且对于包含每个日的自定义内容也很有用。



      3、捕获用户与 Calendar Web 服务器控件之间的交互

当用户选择单个日期或日期范围时,Calendar 控件引发 SelectionChanged 事件。当用户显示一个新月份时,该控件引发 VisibleMonthChanged 事件。通过为这些事件创建方法,可确定用户选定了哪个日期或哪些日期并进行适当的响应。一种响应可能是自定义该日期的显示。

4、在 Calendar 控件中显示数据库信息

一个常用的方案是在日历中显示数据库信息。例如,一个事件日历通常基于在数据库中存储的信息。

Calendar 控件并不直接支持数据绑定,即您不是将日历作为一个整体绑定到数据源。相反,您为控件的 DayRender 事件创建一个方法,该事件在呈现当前日历月份中的每个日时引发。在该事件的处理程序中,您可从数据源中提取信息,并将这些信息添加到浏览器中呈现的流。

5、辅助功能

为使辅助设备的用户能更方便地访问 Calendar 控件,该控件支持名为 UseaccessibleHeader 的属性。当此属性设置为 true 时(默认设置),会使用 HTML th 元素呈现包含日名称的列标题。



四、如何:在 Calendar Web 服务器控件中控制月份定位

      默认情况下,日历 (Calendar) 控件显示包含当前日期的月份。通过单击日历标题栏中的月导航链接,用户可以在 Calendar 控件的不同月份间移动。您可以控制这些链接是否可供用户单击。



您还可以编程方式定位,这在您想为用户提供另一种显示特定月份的方法时很有用。最后,您可响应在用户定位时引发的事件。

      1、启用或禁用用户月份定位

将 Calendar 控件的 ShowNextPRevMonth 属性设置为 true 或 false。如果该属性设置为 false,则控件不在标题中显示允许用户在月份之间移动的 LinkButton 控件。

提示: 通过设置 NextMonthText、PrevMonthText、NextPrevFormat 和 NextPrevStyle 属性,可以更改月份定位超链接的外观。

      2、以编程方式定位月份

将控件的 VisibleDate 属性设置为要显示的月份中的某个日期。该日期可以是此月份中的任意一天,但通常设置为此月份中的第一天。如果 VisibleDate 属性为空(如果设置为 DateTime.Empty),则当前可见月份从 TodaysDate 属性的值获取。

下例定位到 2000 年 2 月:

Calendar1.VisibleDate = new DateTime(2000, 2, 1);

更改 VisibleDate 属性对 TodaysDate、SelectedDayStyle 或 SelectedDates 属性的值没有影响。

如果启用月份定位,则日历 (Calendar) 控件将在用户移动到另一个月份时引发一个事件。您可处理该事件以替换或修正默认的月份定位。例如,如果在一个旅行计划页上使用两个 Calendar 控件,则可以防止用户在设置起始日期月份之前设置结束日期月份。

      3、响应月份定位事件

为控件的 VisibleMonthChanged 事件创建一个方法。当该事件引发时,控件已经将 VisibleMonth 属性值增加或减少了 1。

VisibleMonthChanged 事件采用一个 MonthChangedEventArgs 类型的参数。您可使用该参数的如下属性确定或重写用户的操作:

属性
说明

PreviousDate
在用户单击月份定位按钮之前显示的月份值。可以将该属性的值与控件的 VisibleMonth 属性值进行比较,以确定用户的定位方向。若要取消用户单击的效果,请将控件的 VisibleDate 属性设置为该值。

NewDate
用户已经定位到的月份值。在 VisibleDate 事件引发前,VisibleMonthChanged 属性更新为该值。


private void Calendar1_VisibleMonthChanged (object sender,

   System.Web.UI.WebControls.MonthChangedEventArgs e)

{

     // Select the 10th and 25th of each month.

     Calendar1.SelectedDates.Clear();

     Calendar1.SelectedDates.Add(new DateTime(e.NewDate.Year, e.NewDate.Month, 10));

     Calendar1.SelectedDates.Add(new DateTime(e.NewDate.Year, e.NewDate.Month, 25));

}



五、如何:控制 Calendar Web 服务器控件中的用户日期选定

      您可指定用户可在 Calendar 控件中选定个别日、个别周或整个月份。您也可以完全禁用日选定。

1、控制用户日期选定

将 Calendar 控件的 SelectionMode 属性设置为在 SelectionMode 枚举中定义的一个值:Day、DayWeek 或 DayWeekMonth。若要禁用所有日期选定,请将该属性设置为 None。

说明: 用户只可选定单个日、单个周或整个月份。但是,在代码中您可选定任意一组日期。

当启用日期选定时,只要用户选定一天、一周或一个月,就会提交窗体并引发一个事件,您可为该事件创建一个方法。

为允许用户选定一个日期,日历将显示链接。个别日包含带有日期编号的链接。如果将日历设置为允许用户选定一周或整个月份,日历的左侧会额外添加一个带有选定链接的列。

说明: 您还可以控制个别日的日期选定。例如,您可指定用户可单击该月份的特定日,如假日。

您可为周和月份选定链接指定文本。

      2、指定周和月份选定链接文本

将 SelectWeekText 和 SelectMonthText 属性设置为用于导航链接的文本。

还可以为包含周和月份选定链接的列设置字体、颜色和边框样式,以及为日设置样式。