Calendar Web 控件所支持的事件分別為OnDayRender、OnVisibleMonthChanged 以及OnSelectionChanged 這三個事件,接下來我們來了解如何使用。
OnSelectionChanged 事件
OnSelectionChanged 事件當使用者點選月歷控件上的不同日期,或選了整月或整周時觸發。其宣告語法為:
Sub OnSelectionChanged(Sender As Object, e As EventAres)
...
End Sub
下列范例顯示使用者所點選的日期:
<Html>
<Form runat="Server">
<ASP:Calendar Id="calA" Runat="Server"
SelectionMode="DayWeekMonth" ShowGridLines="True"
ShowNextPrevMonth="True" NextMonthText="[Next]"
SelectedDayStyle-BackColor="#DBDBDB"
OnSelectionChanged="calA_SC"/>
</Form>
<ASP:Label Id="Label1" Runat="Server"/>
<Script Language="VB" Runat="Server">
Sub calA_SC(Sender As Object, e As EventArgs)
Label1.Text="您所點選的日期為: " & calA.SelectedDate
End Sub
</Script>
</Html>
上述范例當使用者選取整周或整個月時,只能顯示所選取的第一天;若要顯示被選取的范圍,利用SelectedDates 集合來取得使用者點選的范圍。下列范例可以顯示使用者選取的整周或整月:
<Html>
<Form runat="Server">
<ASP:Calendar Id="calA" Runat="Server"
SelectionMode="DayWeekMonth" ShowGridLines="True"
ShowNextPrevMonth="True" NextMonthText="[Next]"
SelectedDayStyle-BackColor="#DBDBDB"
OnSelectionChanged="calA_SC"/>
</Form>
<ASP:Label Id="Label1" Runat="Server"/>
<Script Language="VB" Runat="Server">
Sub calA_SC(Sender As Object, e As EventArgs)
Label1.Text="您所點選的日期為: " & calA.SelectedDate
If calA.SelectedDates.Count > 1 Then
Label1.Text + = " 至" &
calA.SelectedDates.Item(calA.SelectedDates.Count-1)
End If
End Sub
</Script>
</Html>
由于SelectedDates 是集合對象,我們當然可以加入一些特定的日期到集合中,只要利用SelectedDates.Add 方法即可。另外SelectedDates 集合中有SelectRange 屬性可以用來指定某個范圍的日期。下列范例讓使用者輸入指定范圍的日期,然后利用Calendar Web 控件顯示:
<Html>
<Form runat="Server">
請輸入日期范圍(格式YYYY/MM/DD):<br>
從: <ASP:TextBox Id="Text1" Runat="Server"/>
至: <ASP:TextBox Id="Text2" Runat="Server"/>
<ASP:Button Id="btnOK" Text="確定" OnClick="btnOK_Click"
Runat="Server"/><br>
<ASP:Calendar Id="calA" Runat="Server"
SelectionMode="DayWeekMonth" ShowGridLines="True"
ShowNextPrevMonth="True" NextMonthText="[Next]"
SelectedDayStyle-BackColor="#DBDBDB"/>
</Form>
<Script Language="VB" Runat="Server">
Sub btnOK_Click(Sender As Object, e As EventArgs)
calA.SelectedDates.SelectRange(Text1.Text, Text2.Text)
End Sub
</Script>
</Html>
OnVisibleMonthChanged 事件
OnVisibleMonthChanged 事件當使用者點選月歷控件標題列上的上個月或下個月按鈕時觸發。其宣告語法為:
Sub OnVisibleMonthChanged(Sender As Object, e As MonthChangedEventArgs)
...
End Sub>
其中參數e 有兩個屬性,如下表所示:
OnDayRender 事件
OnDayRender 事件當月歷控件在產生每一天的表格時觸發。其宣告語法為:
Sub OnDayRender(Sender As Object, e As DayRenderEventArgs)
...
End Sub
其中參數e 有14 個屬性,如下表所示:
下列范例單純的顯示月歷,并將本月的雙數日期反像顯示:
<%@Import Namespace="System.Drawing"%>
<Html>
<Form runat="Server">
<ASP:Calendar Id="calA" Runat="Server"
SelectionMode="None" ShowGridLines="True"
BorderColor="Gray" TitleStyle-BackColor="White"
OnDayRender="calA_DayRender"/>
</Form>
<Script Language="VB" Runat="Server">
Sub calA_DayRender(Sender As Object, e As DayRenderEventArgs)
If e.Day.DayNumberText.ToInt16 Mod 2 = 0 And Not e.Day.IsOtherMonth
Then
e.Cell.BackColor=Color.Gray '以顏色名稱設定顏色
e.Cell.ForeColor=Color.FromARGB(255,255,255,255) '設定顏色
End If
End Sub
</Script>
</Html>