Calendar with events : Calendar « ASP.net Controls « ASP.NET Tutorial






<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="CalenderRender" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Calender DayRender</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <h1>Using DayRender</h1>
    <asp:Calendar ID="calRender" 
                  runat="server" 
                  BackColor="White" 
                  BorderColor="Black" 
                  BorderStyle="Solid" 
                  CellSpacing="1" 
                  Font-Names="Verdana" 
                  Font-Size="9pt" 
                  ForeColor="Black" 
                  Height="504px" 
                  NextPrevFormat="ShortMonth" 
                  Width="664px" 
                  OnDayRender="calRender_DayRender" 
                  OnSelectionChanged="calRender_SelectionChanged"  >
        
        <SelectedDayStyle BackColor="#333399" ForeColor="White" />
        <OtherMonthDayStyle ForeColor="#999999" />
        <DayStyle BackColor="#CCCCCC" />
        <TodayDayStyle BackColor="#999999" ForeColor="White" />
        <NextPrevStyle Font-Bold="True" Font-Size="8pt" ForeColor="White" />
        <DayHeaderStyle Font-Bold="True" 
                        Font-Size="8pt" 
                        ForeColor="#333333" 
                        Height="8pt" />
        <TitleStyle BackColor="#333399" 
                    BorderStyle="Solid" 
                    Font-Bold="True" 
                    Font-Size="9pt"
                    ForeColor="White" Height="9pt" />
            
    </asp:Calendar>
    <asp:Label ID="labMessage" runat="server" />
    </div>
    </form>
</body>
</html>

File: Default.aspx.cs

using System.Collections;
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Text;

public class CalenderEvent
{
  public enum EventTypes
  {
    AllDayEvent, Appointment, ToDoReminder
  }

  private string _shortDescription;
  private string _fullDescription;
  private DateTime _eventDate;
  private EventTypes _eventType;

  public CalenderEvent(string shortDescription, string fullDescription, DateTime eventDate, EventTypes eventType)
  {
    _shortDescription = shortDescription;
    _fullDescription = fullDescription;
    _eventDate = eventDate;
    _eventType = eventType;
  }

  public override string ToString()
  {
    StringBuilder sb = new StringBuilder();
    sb.Append(this.Date.ToShortDateString());
    sb.Append(" -- ");
    sb.Append(this.EventTypeString);
    sb.Append("<br/>");
    sb.Append(FullDescription);
    return sb.ToString();    
  }

  public string FullDescription
  {
    get { return _fullDescription; }
    set { _fullDescription = value; }
  }

  public string ShortDescription
  {
    get { return _shortDescription; }
    set { _shortDescription = value; }
  }

  public DateTime Date
  {
    get { return _eventDate; }
    set { _eventDate = value; }
  }

  public EventTypes Type
  {
    get { return _eventType; }
    set { _eventType = value; }
  }

  public string EventTypeString
  {
    get
    {
      if (this.Type == EventTypes.AllDayEvent)
        return "All Day Event";
      else if (this.Type == EventTypes.Appointment)
        return "Appointment";
      else
        return "To Do Reminder";
    }
  }

  public string ImageFile
  {
    get
    {
      if (this.Type == EventTypes.AllDayEvent)
        return "cal_allday.gif";
      else if (this.Type == EventTypes.Appointment)
        return "cal_appointment.gif";
      else
        return "cal_todo.gif";
    }
  }
}

public partial class CalenderRender : System.Web.UI.Page
{
  private ArrayList _events;

    protected void Page_Load(object sender, EventArgs e)
    {
    FillCalender();
    }

  private void FillCalender()
  {
    _events = new ArrayList();

    _events.Add(new CalenderEvent("A", "event a", DateTime.Now, CalenderEvent.EventTypes.Appointment));
    _events.Add(new CalenderEvent("B", "event b", DateTime.Now.AddDays(2.0), CalenderEvent.EventTypes.ToDoReminder));
    _events.Add(new CalenderEvent("C", "event c", DateTime.Now.AddDays(5.0), CalenderEvent.EventTypes.AllDayEvent));
  }

  protected void calRender_DayRender(object sender, DayRenderEventArgs e)
  {
    DateTime renderDay = e.Day.Date;

    foreach (CalenderEvent cEvent in _events)
    {
      if (renderDay.ToShortDateString() == cEvent.Date.ToShortDateString())
      {
        Image img = new Image();
        img.ImageUrl = "~/images/" + cEvent.ImageFile;
        img.ToolTip = cEvent.ShortDescription;
        img.ImageAlign = ImageAlign.Middle;
        e.Cell.Controls.Add(img);
      }
    }
  }

  protected void calRender_SelectionChanged(object sender, EventArgs e)
  {
    DateTime selectDay = calRender.SelectedDate;
    string message = "";

    foreach (CalenderEvent cEvent in _events)
    {
      if (selectDay.ToShortDateString() == cEvent.Date.ToShortDateString())
      {
        message = cEvent.ToString();
      }
    }

    if (message == "")
      labMessage.Text = "No event scheduled for " + selectDay.ToShortDateString();
    else
      labMessage.Text = message;

  }
}








3.21.Calendar
3.21.1.Important properties of the Calendar control
3.21.2.Calendar style
3.21.3.Convert Selected Date from Calendar to Long Date String
3.21.4.title style, day header style, today style, and other month day style
3.21.5.Calendar with events
3.21.6.Calendar selection changed event (C#)
3.21.7.Format value retrieved from asp:Calendar (C#)
3.21.8.Format value from asp:Calendar as 'dddd, MMMM dd yyyy' (VB.net)
3.21.9.Calendar day renderer event (C#)
3.21.10.Appointment based on Calendar (C#)
3.21.11.Bind selected dates from a calendar to asp:BulletedList
3.21.12.Creating a Pop-up Date Picker
3.21.13.Retrieving a range of dates from a selection (C#)
3.21.14.Retrieving a range of dates from a selection (VB)
3.21.15.Controlling how a day is rendered in the Calendar (C#)
3.21.16.Controlling how a day is rendered in the Calendar (VB)
3.21.17.Calendar control and some of its colorful styles