如何:在 Calendar Web 服务器控件中控制月份定位
更新:2007 年 11 月
默认情况下,日历 (Calendar) 控件显示包含当前日期的月份。通过单击日历标题栏中的月导航链接,用户可以在 Calendar 控件的不同月份间移动。您可以控制这些链接是否可供用户单击。
您还可以编程方式定位,这在您想为用户提供另一种显示特定月份的方法时很有用。最后,您可响应在用户定位时引发的事件。
启用或禁用用户月份定位
将 Calendar 控件的 ShowNextPrevMonth 属性设置为 true 或 false。如果该属性设置为 false,则控件不在标题中显示允许用户在月份之间移动的 LinkButton 控件。
提示:
通过设置 NextMonthText、PrevMonthText、NextPrevFormat 和 NextPrevStyle 属性,可以更改月份定位超链接的外观。
以编程方式定位月份
将控件的 VisibleDate 属性设置为要显示的月份中的某个日期。该日期可以是此月份中的任意一天,但通常设置为此月份中的第一天。如果 VisibleDate 属性为空(如果设置为 DateTime.Empty),则当前可见月份从 TodaysDate 属性的值获取。
下例定位到 2000 年 2 月:
Calendar1.VisibleDate = New Date(2000, 2, 1)
Calendar1.VisibleDate = new DateTime(2000, 2, 1);
更改 VisibleDate 属性对 TodaysDate、SelectedDayStyle 或 SelectedDates 属性的值没有影响。
如果启用月份定位,则日历 (Calendar) 控件将在用户移动到另一个月份时引发一个事件。您可处理该事件以替换或修正默认的月份定位。例如,如果在一个旅行计划页上使用两个 Calendar 控件,则可以防止用户在设置起始日期月份之前设置结束日期月份。
响应月份定位事件
为控件的 VisibleMonthChanged 事件创建一个方法。当该事件引发时,控件已经将 VisibleMonth 属性值增加或减少了 1。
VisibleMonthChanged 事件采用一个 MonthChangedEventArgs 类型的参数。您可使用该参数的如下属性确定或重写用户的操作:
属性
说明
在用户单击月份定位按钮之前显示的月份值。可以将该属性的值与控件的 VisibleMonth 属性值进行比较,以确定用户的定位方向。若要取消用户单击的效果,请将控件的 VisibleDate 属性设置为该值。
用户已经定位到的月份值。在 VisibleDate 事件引发前,VisibleMonthChanged 属性更新为该值。
Public Sub Calendar1_VisibleMonthChanged(ByVal sender As Object, _ ByVal e As System.Web.UI.WebControls.MonthChangedEventArgs) _ Handles Calendar1.VisibleMonthChanged ' 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)) End Sub
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)); }