|
How to set the holidays in the Calendar control?
by: Itfunda
Product Type: Tips and Tricks (Books)
Technologies: ASP.NET Calendar
In case we want to display holidays in the calendar control dynamically from the server side, we can
use this approach.
ASPX Page
<asp:Calendar runat="server" ID="Calendar1" BackColor="White" BorderColor="#3366CC"
BorderWidth="1px" CellPadding="1" DayNameFormat="Shortest" Font- Names="Verdana"
Font-Size="8pt" ForeColor="#003399" Height="200px" Width="220px" OnDayRender="AttachHolidays">
<DayHeaderStyle BackColor="#99CCCC" ForeColor="#336666" Height="1px" />
<NextPrevStyle Font-Size="8pt" ForeColor="#CCCCFF" />
<OtherMonthDayStyle ForeColor="#999999" />
<SelectedDayStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" />
<SelectorStyle BackColor="#99CCCC" ForeColor="#336666" />
<TitleStyle BackColor="#003399" BorderColor="#3366CC" BorderWidth="1px" Font-Bold="True"
Font-Size="10pt" ForeColor="#CCCCFF" Height="25px" />
<TodayDayStyle BackColor="#99CCCC" ForeColor="White" />
<WeekendDayStyle BackColor="#CCCCCC" ForeColor="#333333" />
</asp:Calendar>
Code Behind
Dictionary<string, string> holidays = new Dictionary<string, string>();
protected void Page_Load(object sender, EventArgs e)
{
// get the list of holiday from the database or any other source into the array
holidays.Add("19", "DNF Days");
holidays.Add("24", "ITF Days");
holidays.Add("28", "ITFC Days");
}
protected void AttachHolidays(object sender, DayRenderEventArgs e)
{
if (holidays.ContainsKey(e.Day.DayNumberText) && !e.Day.IsOtherMonth)
{
// set the holday description with Literal control
e.Cell.Controls.Add(new LiteralControl("<p>" +
holidays[e.Day.DayNumberText] + "</p>"));
// set the style
e.Cell.BackColor = System.Drawing.Color.Green;
e.Cell.ForeColor = System.Drawing.Color.Yellow;
e.Cell.Font.Bold = true;
}
}
In the above code snippet, we have a Calendar control with different style set using its style related child elements. To set the holidays in the Celendar control, the list of holidays can be saved in the Dictionary object (key and value pair where key is the date and value is the description of the holiday), in real time project, you may get it from the database or some other data source. In OnDayRender event of the Calendar control, we have specified AttachHolidays method that fires when the Calendar control renders. In this method, the day of the holidays has been checked and current month date has been checked against the list of holidays in the Dictionary object and If
exists, a new Literal control has been added with the holiday description from the Dictionary object and then the background color, foreground color and font bold style have been changed.
OUTPUT
|