<%--
Beginning ASP.NET 1.0 with C# (Paperback)
by David Sussman, Chris Ullman,
Juan T. Llibre, John Kauffman,
Ollie Cornes, Ajoy Krishnamoorthy,
Srinivasa Sivakumar, Chris Goode,
Neil Raybould, Christopher Miller,
Rob Birdwell, Matt Butler, Gary Johnson
# Publisher: Wrox Press; 1st edition (June 2002)
# Language: English
# ISBN: 1861007345
--%>
<%@ Page Language="c#" %>
<%@ Import Namespace="System.Data"%>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Globalization" %>
<html>
<head>
<script language="c#" runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!(IsPostBack))
{
ShowDailyEvents();
}
}
public void MyCalendar_SelectionChanged(object sender, EventArgs e)
{
ShowDailyEvents();
}
protected DataSet LoadMyCalendarData()
{
string sourceXml = Server.MapPath("MyCalendar.xml");
if (!(File.Exists(sourceXml)))
{
return null;
}
DataSet cachedDataSet = (DataSet)Session["MyCalendarData"];
if (cachedDataSet != null)
{
return cachedDataSet;
}
DataSet dataSet = new DataSet();
try
{
dataSet.ReadXml(sourceXml);
Session["MyCalendarData"] = dataSet;
}
catch (Exception e)
{
SelectedDate.Text = e.Message;
dataSet = null;
}
return dataSet;
}
protected void MyCalendar_DayRender(object sender, DayRenderEventArgs e)
{
if (e.Day.IsOtherMonth)
{
e.Cell.BackColor=System.Drawing.Color.FromName("Gainsboro");
}
else
{
if (e.Day.IsWeekend)
{
e.Cell.BackColor=System.Drawing.Color.FromName("PaleGoldenrod");
}
else
{
e.Cell.BackColor=System.Drawing.Color.FromName("LightGoldenrodYellow");
}
}
DataSet dataSet = LoadMyCalendarData();
if (dataSet == null)
{
return;
}
foreach (DataRow zRow in dataSet.Tables[0].Rows)
{
DateTime compareDate = GetSafeDate(zRow["EventDate"].ToString());
if (compareDate == e.Day.Date)
{
// Event matches date criteria ?display it...
MyCalendarEventData myEventData = new MyCalendarEventData();
myEventData.ShortDesc = zRow["ShortDesc"].ToString();
myEventData.DetailDesc = zRow["DetailDesc"].ToString();
myEventData.StartTime = zRow["StartTime"].ToString();
myEventData.EndTime = zRow["EndTime"].ToString();
Label dailyEventLabel = new Label();
dailyEventLabel.Text = "<br />" + myEventData.ShortDesc;
e.Cell.Controls.Add(dailyEventLabel);
}
}
}
protected void ShowDailyEvents()
{
DateTime d = MyCalendar.SelectedDate;
DataSet dataSet = LoadMyCalendarData();
if (dataSet == null)
{
return;
}
ArrayList aEvents = new ArrayList();
foreach (DataRow zRow in dataSet.Tables[0].Rows)
{
DateTime compareDate = GetSafeDate(zRow["EventDate"].ToString());
if (compareDate == d)
{
// Event matches date criteria ?display it...
MyCalendarEventData myEventData = new MyCalendarEventData();
myEventData.EventDate = d;
myEventData.ShortDesc = zRow["ShortDesc"].ToString();
myEventData.DetailDesc = zRow["DetailDesc"].ToString();
myEventData.StartTime = zRow["StartTime"].ToString();
myEventData.EndTime = zRow["EndTime"].ToString();
aEvents.Add(myEventData);
}
}
// Bind to the Repeater control...
DailyEventDetailRepeater.DataSource = aEvents;
DailyEventDetailRepeater.DataBind();
if (aEvents.Count > 0)
{
DailyDetailsPanel.Visible = true;
SelectedDate.Text = "Events For " + d.ToLongDateString();
}
else
{
DailyDetailsPanel.Visible = false;
SelectedDate.Text = "No Events Scheduled For " + d.ToLongDateString();
}
}
private DateTime GetSafeDate(string proposedDate)
{
// Returns a non-null DateTime even if proposed date can"t be parsed
DateTime safeDate;
try {
safeDate = DateTime.Parse(proposedDate, DateTimeFormatInfo.InvariantInfo);
} catch (Exception e) {
Response.Write("<!-- Failed to parse date: " + e.Message + " -->");
safeDate = DateTime.MinValue;
}
return safeDate;
}
public class MyCalendarEventData
{
private string m_ShortDesc;
private string m_DetailDesc;
private DateTime m_EventDate;
private string m_StartTime;
private string m_EndTime;
public string ShortDesc
{
get {
return m_ShortDesc;
}
set {
m_ShortDesc = value;
}
}
public string DetailDesc
{
get {
return m_DetailDesc;
}
set {
m_DetailDesc = value;
}
}
public DateTime EventDate
{
get {
return m_EventDate;
}
set {
m_EventDate = value;
}
}
public string StartTime
{
get {
return m_StartTime;
}
set {
m_StartTime = value;
}
}
public string EndTime
{
get {
return m_EndTime;
}
set {
m_EndTime = value;
}
}
}
</script>
</head>
<body>
<h1>My Calendar</h1>
<form id="MyCalendarForm" method="post" runat="server">
<p align="center">
<asp:Calendar id="MyCalendar" runat="server"
SelectedDate="2002/07/17"
VisibleDate="2002/07/01"
FirstDayOfWeek="Monday"
DayNameFormat="Full"
ShowDayHeader="True"
ShowGridLines="True"
ShowNextPrevMonth="True"
ShowTitle="True"
nextprevstyle-backcolor="DodgerBlue"
nextprevstyle-forecolor="White"
nextprevstyle-font-bold="True"
nextprevstyle-font-size="Large"
TitleFormat="MonthYear"
TitleStyle-BackColor="DodgerBlue"
TitleStyle-ForeColor="White"
TitleStyle-Font-Size="Large"
TitleStyle-Font-Bold="True"
dayheaderstyle-backcolor="DodgerBlue"
dayheaderstyle-forecolor="White"
daystyle-horizontalalign="Left"
daystyle-verticalalign="Top"
daystyle-font-size="Small"
SelectedDayStyle-Font-Bold="True"
selecteddaystyle-horizontalalign="Left"
selecteddaystyle-verticalalign="Top"
selecteddaystyle-font-size="Small"
selecteddaystyle-forecolor="Red"
TodayDayStyle-HorizontalAlign="Left"
TodayDayStyle-VerticalAlign="Top"
todaydaystyle-backcolor="White"
OnDayRender="MyCalendar_DayRender"
OnSelectionChanged="MyCalendar_SelectionChanged">
</asp:Calendar>
</p>
<p align="center">
<asp:label id="SelectedDate" runat="server" font-size="Large" />
</p>
<asp:panel id="DailyDetailsPanel" runat="server">
<asp:Repeater id="DailyEventDetailRepeater" runat="server">
<HeaderTemplate>
<p align="center">
<table border="1" width="100%">
<table style="color:Black;border collapse:collapse;">
<tr style="color:White;background-color:DodgerBlue;
font-weight:bold;">
<td><b>Event</b></td>
<td><b>Description</b></td>
<td><b>Start Time</b></td>
<td><b>End Time</b></td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr style="background-color:White;">
<td><%# DataBinder.Eval(Container.DataItem, "ShortDesc") %></td>
<td><%# DataBinder.Eval(Container.DataItem, "DetailDesc") %></td>
<td><%# DataBinder.Eval(Container.DataItem, "StartTime") %></td>
<td><%# DataBinder.Eval(Container.DataItem, "EndTime") %></td>
</tr>
</ItemTemplate >
<AlternatingItemTemplate>
<tr style="background-color:Gainsboro;">
<td><%# DataBinder.Eval(Container.DataItem, "ShortDesc") %></td>
<td><%# DataBinder.Eval(Container.DataItem, "DetailDesc") %></td>
<td><%# DataBinder.Eval(Container.DataItem, "StartTime") %></td>
<td><%# DataBinder.Eval(Container.DataItem, "EndTime") %></td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
</table>
</p>
</FooterTemplate>
</asp:Repeater>
</asp:panel>
</form>
</body>
</html>
<%--
<?xml version="1.0" standalone="yes"?>
<MyCalendar>
<Event>
<ShortDesc>Gig in Portland - Jazz Club</ShortDesc>
<DetailDesc>This should be fun - playing J & T again - be sure to bring the charts.</DetailDesc>
<EventDate>2002/07/02</EventDate>
<StartTime>6:00PM</StartTime>
<EndTime>11:30PM</EndTime>
</Event>
<Event>
<ShortDesc> Rehearsal - Brigadoon</ShortDesc>
<DetailDesc>Community Theatre orchestra rehearsal - bring mutes.</DetailDesc>
<EventDate>2002/07/14</EventDate>
<StartTime>3:30PM</StartTime>
<EndTime>6:30PM</EndTime>
</Event>
<Event>
<ShortDesc>.NET Training Class</ShortDesc>
<DetailDesc>This should be fun - we"ll explore some of the really cool stuff, like ASP.NET server controls and Web Services.</DetailDesc>
<EventDate>2002/07/17</EventDate>
<StartTime>8:00AM</StartTime>
<EndTime>4:30PM</EndTime>
</Event>
<Event>
<ShortDesc>Writing Workshop for Musical Project with Gregg</ShortDesc>
<DetailDesc>We"re going to brainstorm some ideas and see if we can come up with something great. We"re off to a good start.</DetailDesc>
<EventDate>2002/07/19</EventDate>
<StartTime>10:00AM</StartTime>
<EndTime>6:30PM</EndTime>
</Event>
<Event>
<ShortDesc>Community Band</ShortDesc>
<DetailDesc>Central park - we"ll play everything from standards to shows tunes to classical to marches - you name it. People bring their lawn chairs, eat their dinner, kids play - a great time!</DetailDesc>
<EventDate>2002/07/24</EventDate>
<StartTime>7:00PM</StartTime>
<EndTime>9:00PM</EndTime>
</Event>
<Event>
<ShortDesc>Jam Session at the Beach</ShortDesc>
<DetailDesc>Bring more food this time and the crab nets - and the instruments! We"ll might stay for a week or so depending on the weather.</DetailDesc>
<EventDate>2002/07/21</EventDate>
<StartTime>8:00AM</StartTime>
<EndTime>11:30PM</EndTime>
</Event>
<Event>
<ShortDesc>Rob"s Birthday!</ShortDesc>
<DetailDesc>Nothing too fancy - just friends and family. Hope it"s a nice day - bike ride would be fun.</DetailDesc>
<EventDate>2002/07/30</EventDate>
<StartTime>6:09PM</StartTime>
<EndTime>11:30PM</EndTime>
</Event>
<Event>
<ShortDesc />
<DetailDesc />
<EventDate />
<StartTime />
<EndTime />
</Event>
<Event>
<ShortDesc>Event</ShortDesc>
<DetailDesc>Number </DetailDesc>
<EventDate>Wrox</EventDate>
<StartTime>6.00</StartTime>
<EndTime>11.30</EndTime>
</Event>
</MyCalendar>
--%>