' それぞれの日付セルをレンダリングするタイミングで実行
Sub cal_DayRender(sender As Object, e As DayRenderEventArgs)
Dim db As New SqlConnection("Data Source=(local);User ID=sa;Password=sa;Persist Security Info=True;Initial Catalog=dotnet")
' 出力する日付で登録されたスケジュール情報が存在するかをチェック
Dim comm As New SqlCommand("SELECT sid FROM schedule WHERE sdate=@sdate", db)
comm.Parameters.Add("@sdate", e.Day.Date)
db.Open()
Dim reader As SqlDataReader = comm.ExecuteReader()
' スケジュールが存在する場合にのみセルの背景色をセット
If reader.HasRows Then e.Cell.BackColor=Color.Lavender
db.Close()
End Sub
' 選択セルが変更されたタイミングで実行
Sub cal_Changed(sender As Object, e As EventArgs)
Dim db As New SqlConnection("Data Source=(local);User ID=sa;Password=sa;Persist Security Info=True;Initial Catalog=dotnet")
' 選択された日付をキーにscheduleテーブルを検索
Dim comm As New SqlCommand("SELECT * FROM schedule WHERE sdate=@sdate ORDER BY stime ASC", db)
comm.Parameters.Add("@sdate", cal.SelectedDate)
db.Open()
' 取得したDataReaderをRepeaterコントロールにバインド
scheInfo = comm.ExecuteReader()
rep.DataBind()
db.Close()
End Sub
</script>
<html>
<head>
<title>スケジュールの詳細を表示する</title>
</head>
<body>
<form runat="Server">
<table border="0">
<tr><td valign="top" width="230">
<asp:Calendar id="cal" runat="Server" Width="200" Height="200"
DayHeaderStyle-BackColor="#FFCC66" onDayRender="cal_DayRender" OnSelectionChanged="cal_Changed"
ShowGridLines="true"
BorderWidth="3" BorderColor="Black" Font-Name="Verdana"
Font-Size="10px" TitleStyle-BackColor="#FFCC66"
TitleStyle-Font-Size="12px" TitleStyle-Font-Bold="true"
DayStyle-VerticalAlign="Top" SelectedDayStyle-BackColor="Navy"
ShowNextPrev="True" NextPrevFormat="FullMonth">
<SelectedDayStyle BackColor="#CC5533" />
</asp:Calendar>
</td><td valign="top" width="370">
<asp:Repeater id="rep" runat="Server" DataSource="<%# scheInfo %>">
<HeaderTemplate>
<table width="100%" bgcolor="#cee3f0" border="0">
<tr>
<td><span style="font-weight:bold;">
<%# cal.SelectedDate.ToString("yyyy年MM月dd日") %>のスケジュール
</span></td>
</tr>
</table>
<dl>
</HeaderTemplate>
<ItemTemplate>
<dt style="font-weight:bold;">
<%# DataBinder.Eval(Container.DataItem, "title") %>
(<%# DataBinder.Eval(Container.DataItem, "sTime") %>〜
<%# DataBinder.Eval(Container.DataItem, "eTime") %>)</dt>
<dd><%# DataBinder.Eval(Container.DataItem, "memo") %></dd>
</ItemTemplate>
<FooterTemplate></dl></FooterTemplate>
</asp:Repeater>
</td></tr>
</table>
</form>
</body>
</html>