Hi All,
I want to create custom control by using Web.UI.WebContr ols.Calendar,
in which I want to set few days with different color. I had created two
property to set the color and storing in viewstate. I had created 4
methods to Add/Remove my special dates in viewstate.
Up to here all seems perfect, but how do I used it in prerender event
for my new calendar control.
Scenario:
I want to creae a web applicaiton which for Even Organizer.
I want to create my own custom calendar control/ User control which
show the dates in different color. There are list of dates on which the
event is organized, and there are few dates which are expiered. I want
to display this dates in two different color. I can easily implement it
in OnDayRender(obj ect sender, DayRenderEventA rgs e) event of system
calendar control. But i want to use same functionality on multiple web
pages, and for that i want to create Custom Control/User Control.
My quesion is where should i put my code to change the color of dates.
Below is my stuff. Your ideas also most welcomed.
Thanks & Regards,
Rushikesh
/////////////*********** CODE FOR EventCalendarCo ntrol
*************** ***////////////////
using System;
using System.Collecti ons.Generic;
using System.Componen tModel;
using System.Collecti ons;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.W ebControls;
using System.Drawing;
namespace MACT.Controls
{
[ToolboxData("<{ 0}:EventCalenda rControl
runat=server></{0}:EventCalend arControl>")]
public class EventCalendarCo ntrol :
System.Web.UI.W ebControls.Cale ndar
{
[Bindable(true),
Category("Appea rance"),
DefaultValue("" )]
#region Properties
public Color EventColor
{
get
{
object o = ViewState["EventColor "];
if (o == null)
return Color.Empty;
else
return (Color)o;
}
set
{
ViewState["EventColor "] = value;
}
}
public Color ExpieredEventCo lor
{
get
{
object o = ViewState["ExpieredEventC olor"];
if (o == null)
return Color.Empty;
else
return (Color)o;
}
set
{
ViewState["ExpieredEventC olor"] = value;
}
}
#endregion
#region Add/Remove Date Functionality
public void AddEventDate(Da teTime dt)
{
object o = ViewState["EventDates "];
ArrayList dtArray;
if (o == null)
dtArray = new ArrayList(10);
else
dtArray = (ArrayList)o;
dtArray.Add(dt) ;
ViewState["EventDates "] = dtArray;
}
public void AddExpierEventD ate(DateTime dt)
{
object o = ViewState["ExpierEventDat e"];
ArrayList dtArray;
if (o == null)
dtArray = new ArrayList(10);
else
dtArray = (ArrayList)o;
dtArray.Add(dt) ;
ViewState["ExpierEventDat e"] = dtArray;
}
public void RemoveEventDate (DateTime dt)
{
object o = ViewState["EventDates "];
ArrayList dtArray;
if (o == null)
dtArray = new ArrayList(10);
else
dtArray = (ArrayList)o;
dtArray.Remove( dt);
ViewState["EventDates "] = dtArray;
}
public void RemoveExpierEve ntDate(DateTime dt)
{
object o = ViewState["ExpierEventDat es"];
ArrayList dtArray;
if (o == null)
dtArray = new ArrayList(10);
else
dtArray = (ArrayList)o;
dtArray.Remove( dt);
ViewState["ExpierEventDat es"] = dtArray;
}
private ArrayList EventDates
{
get
{
object o = ViewState["EventDates "];
ArrayList dtArray = (ArrayList)o;
return dtArray;
}
}
private ArrayList ExpierEventDate s
{
get
{
object o = ViewState["ExpierEventDat es"];
ArrayList dtArray = (ArrayList)o;
return dtArray;
}
}
#endregion Add/Remove Date Functionality
protected override void OnPreRender(obj ect sender,
DayRenderEventA rgs e)
{
//Set event day style
Style eventDateStyle = new Style();
eventDateStyle. BackColor = this.EventColor ;
eventDateStyle. Font.Bold = true;
//Set expiered event day style
Style expieredEventDa teStyle = new Style();
expieredEventDa teStyle.BackCol or = this.ExpieredEv entColor;
expieredEventDa teStyle.Font.Bo ld = true;
//Check for date is event day
if ((IsEventDay(e. Day.Date)))
{
e.Cell.ApplySty le(eventDateSty le);
}
//Check for date is expiered event day
else if ((IsExpieredEve ntDay(e.Day.Dat e)))
{
e.Cell.ApplySty le(expieredEven tDateStyle);
}
}
private bool IsEventDay(Date Time dt)
{
foreach (DateTime dt1 in this.EventDates )
if ((dt1 == dt))
return true;
return false;
}
private bool IsExpieredEvent Day(DateTime dt)
{
foreach (DateTime dt1 in this.ExpieredEv entDates)
if ((dt1 == dt))
return true;
return false;
}
}
}