advanced web statistics

Display Custom Data In An ASP:Calendar Cell

10/19/2007 3:41:24 AM

Pretty basic stuff but can be very useful.  I've been working lately on a scheduling application (2.0) and just finished a user welcome screen at about 1:00am on this lovely Thursday night.  The idea is that users login to the system and on their homepage are shown a calendar.  This calendar should show the current month (or selected month) and visually display what days the user is scheduled for a certain task.  The dates are entered by administrators and stored in a SQL 2005 database.

There are two important methods to use: OnDayRender and OnVisibleMonthChanged.

85% complete pseudo-code.  The accountNumber is arbitrary.  What you don't see is the calendar control in my .aspx page wired up to these handlers.

List<DateTime> _dates = new List<DateTime>();

protected void Page_Load(object sender, EventArgs e)
{
   if (!IsPostBack)
      _dates = Schedule.GetDates(accountNumber, calendar.TodaysDate);
}

protected void OnDayRender(object sender, DayRenderEventArgs e)
{
   if (_dates.Contains(e.Day.Date))
      e.Cell.BackColor = Color.CornflowerBlue;
}

protected void MonthChanged(object sender, MonthChangedEventArgs e)
{
   _dates = Schedule.GetDates(accountNumber, e.NewDate);
}

Now when the user clicks the next and previous month links a new list of dates will be populated and the calendar will display accordingly.

Result

OnDayRender visual

This is very basic stuff but highly effective.  The current application I'm working on displays / functions far beyond the quick demo screenshot I posted.  I give users the ability drill down from the calendar day (SelectionChanged) to view a more detailed view of the current task.  Users can even switch tasks with another user or post up a task to be taken over by someone else. Think trading and picking up shifts at a restaurant.

If there is an easier way to accomplish this please let me know.

.NET, C#

kick it on DotNetKicks.com

Leave a Comment

   

  Enter the text to proceed!