R
rushikesh.joshi
Hi All,
I want to create custom control by using Web.UI.WebControls.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(object sender, DayRenderEventArgs 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 EventCalendarControl
******************////////////////
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Collections;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
namespace MACT.Controls
{
[ToolboxData("<{0}:EventCalendarControl
runat=server></{0}:EventCalendarControl>")]
public class EventCalendarControl :
System.Web.UI.WebControls.Calendar
{
[Bindable(true),
Category("Appearance"),
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 ExpieredEventColor
{
get
{
object o = ViewState["ExpieredEventColor"];
if (o == null)
return Color.Empty;
else
return (Color)o;
}
set
{
ViewState["ExpieredEventColor"] = value;
}
}
#endregion
#region Add/Remove Date Functionality
public void AddEventDate(DateTime 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 AddExpierEventDate(DateTime dt)
{
object o = ViewState["ExpierEventDate"];
ArrayList dtArray;
if (o == null)
dtArray = new ArrayList(10);
else
dtArray = (ArrayList)o;
dtArray.Add(dt);
ViewState["ExpierEventDate"] = 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 RemoveExpierEventDate(DateTime dt)
{
object o = ViewState["ExpierEventDates"];
ArrayList dtArray;
if (o == null)
dtArray = new ArrayList(10);
else
dtArray = (ArrayList)o;
dtArray.Remove(dt);
ViewState["ExpierEventDates"] = dtArray;
}
private ArrayList EventDates
{
get
{
object o = ViewState["EventDates"];
ArrayList dtArray = (ArrayList)o;
return dtArray;
}
}
private ArrayList ExpierEventDates
{
get
{
object o = ViewState["ExpierEventDates"];
ArrayList dtArray = (ArrayList)o;
return dtArray;
}
}
#endregion Add/Remove Date Functionality
protected override void OnPreRender(object sender,
DayRenderEventArgs e)
{
//Set event day style
Style eventDateStyle = new Style();
eventDateStyle.BackColor = this.EventColor;
eventDateStyle.Font.Bold = true;
//Set expiered event day style
Style expieredEventDateStyle = new Style();
expieredEventDateStyle.BackColor = this.ExpieredEventColor;
expieredEventDateStyle.Font.Bold = true;
//Check for date is event day
if ((IsEventDay(e.Day.Date)))
{
e.Cell.ApplyStyle(eventDateStyle);
}
//Check for date is expiered event day
else if ((IsExpieredEventDay(e.Day.Date)))
{
e.Cell.ApplyStyle(expieredEventDateStyle);
}
}
private bool IsEventDay(DateTime dt)
{
foreach (DateTime dt1 in this.EventDates)
if ((dt1 == dt))
return true;
return false;
}
private bool IsExpieredEventDay(DateTime dt)
{
foreach (DateTime dt1 in this.ExpieredEventDates)
if ((dt1 == dt))
return true;
return false;
}
}
}
I want to create custom control by using Web.UI.WebControls.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(object sender, DayRenderEventArgs 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 EventCalendarControl
******************////////////////
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Collections;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
namespace MACT.Controls
{
[ToolboxData("<{0}:EventCalendarControl
runat=server></{0}:EventCalendarControl>")]
public class EventCalendarControl :
System.Web.UI.WebControls.Calendar
{
[Bindable(true),
Category("Appearance"),
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 ExpieredEventColor
{
get
{
object o = ViewState["ExpieredEventColor"];
if (o == null)
return Color.Empty;
else
return (Color)o;
}
set
{
ViewState["ExpieredEventColor"] = value;
}
}
#endregion
#region Add/Remove Date Functionality
public void AddEventDate(DateTime 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 AddExpierEventDate(DateTime dt)
{
object o = ViewState["ExpierEventDate"];
ArrayList dtArray;
if (o == null)
dtArray = new ArrayList(10);
else
dtArray = (ArrayList)o;
dtArray.Add(dt);
ViewState["ExpierEventDate"] = 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 RemoveExpierEventDate(DateTime dt)
{
object o = ViewState["ExpierEventDates"];
ArrayList dtArray;
if (o == null)
dtArray = new ArrayList(10);
else
dtArray = (ArrayList)o;
dtArray.Remove(dt);
ViewState["ExpierEventDates"] = dtArray;
}
private ArrayList EventDates
{
get
{
object o = ViewState["EventDates"];
ArrayList dtArray = (ArrayList)o;
return dtArray;
}
}
private ArrayList ExpierEventDates
{
get
{
object o = ViewState["ExpierEventDates"];
ArrayList dtArray = (ArrayList)o;
return dtArray;
}
}
#endregion Add/Remove Date Functionality
protected override void OnPreRender(object sender,
DayRenderEventArgs e)
{
//Set event day style
Style eventDateStyle = new Style();
eventDateStyle.BackColor = this.EventColor;
eventDateStyle.Font.Bold = true;
//Set expiered event day style
Style expieredEventDateStyle = new Style();
expieredEventDateStyle.BackColor = this.ExpieredEventColor;
expieredEventDateStyle.Font.Bold = true;
//Check for date is event day
if ((IsEventDay(e.Day.Date)))
{
e.Cell.ApplyStyle(eventDateStyle);
}
//Check for date is expiered event day
else if ((IsExpieredEventDay(e.Day.Date)))
{
e.Cell.ApplyStyle(expieredEventDateStyle);
}
}
private bool IsEventDay(DateTime dt)
{
foreach (DateTime dt1 in this.EventDates)
if ((dt1 == dt))
return true;
return false;
}
private bool IsExpieredEventDay(DateTime dt)
{
foreach (DateTime dt1 in this.ExpieredEventDates)
if ((dt1 == dt))
return true;
return false;
}
}
}