Windows Systems Programming: Spring 2004

[ Home | Syllabus | Course Notes | Assignments | Search]


Calendar Controls

Rich set of properties
Events

DayRender event can be used to prevent dates prior to today’s date from being selected:

void OnDayRender (Object sender, DayRenderEventArgs e) 
{
    e.Day.IsSelectable = e.Day.Date >= DateTime.Today;
}

Example

<html>
  <body>
    <h1>Showtime</h1>
    <hr>
    <form runat="server">
      Pick a show:<br>
      <asp:DropDownList ID="ShowName" RunAt="Server">
        <asp:ListItem Text="Cats" Selected="true" RunAt="server" />
        <asp:ListItem Text="Phantom of the Opera" RunAt="server" />
        <asp:ListItem Text="Les Miserables" RunAt="server" />
        <asp:ListItem Text="Cabaret" RunAt="server" />
      </asp:DropDownList>
      <br><br>
      Pick a date:<br>
      <asp:Calendar
        ID="ShowDate" 
        ShowGridLines="true" 
        ForeColor="darkblue"
        SelectedDayStyle-BackColor="darkblue"
        SelectedDayStyle-ForeColor="white"
        SelectedDayStyle-Font-Bold="true"
        TitleStyle-BackColor="darkblue"
        TitleStyle-ForeColor="white"
        TitleStyle-Font-Bold="true"
        NextPrevStyle-BackColor="darkblue"
        NextPrevStyle-ForeColor="white"
        DayHeaderStyle-BackColor="beige"
        DayHeaderStyle-ForeColor="darkblue"
        DayHeaderStyle-Font-Bold="true"
        OtherMonthDayStyle-ForeColor="lightgray"
        OnSelectionChanged="OnDateSelected"
        OnDayRender="OnDayRender"
        RunAt="Server" />
      <br>
      <asp:ImageButton ImageUrl="OrderBtn.gif" OnClick="OnOrder"
        RunAt="server" />
      <br><br><hr>
      <h3><asp:Label ID="Output" RunAt="server" /></h3>
    </form>
  </body>
</html>

<script language="C#" runat="server">
  void OnOrder (Object sender, ImageClickEventArgs e)
  {
      if (ShowDate.SelectedDate.Year > 1900)
          Output.Text = "You selected " +
              ShowName.SelectedItem.Text + " on " +
              ShowDate.SelectedDate.ToLongDateString ();
      else
          Output.Text = "Please select a date";
  }

  void OnDateSelected (Object sender, EventArgs e)
  {
      Output.Text = ""; //// erase last selected date
  }

  void OnDayRender (Object sender, DayRenderEventArgs e)
  {
      e.Day.IsSelectable =
          (e.Day.Date.DayOfWeek == DayOfWeek.Friday ||
          e.Day.Date.DayOfWeek == DayOfWeek.Saturday) &&
          e.Day.Date >= DateTime.Today &&
          !e.Day.IsOtherMonth;

      if (e.Day.IsSelectable && e.Day.Date != ShowDate.SelectedDate)
          e.Cell.BackColor = System.Drawing.Color.Beige;
  }
</script>

 


Copyright chris wild 1999-2004.
For problems or questions regarding this web contact [Dr. Wild].
Last updated: December 22, 2003.