<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>MonicaBoris's WebLog : ASP .NET</title><link>http://blogs.technet.com/monicaboris/archive/tags/ASP+.NET/default.aspx</link><description>Tags: ASP .NET</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Customizing the Calendar control in ASP.NET</title><link>http://blogs.technet.com/monicaboris/archive/2004/02/16/74482.aspx</link><pubDate>Tue, 17 Feb 2004 04:22:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:74482</guid><dc:creator>MonicaBoris</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.technet.com/monicaboris/comments/74482.aspx</comments><wfw:commentRss>http://blogs.technet.com/monicaboris/commentrss.aspx?PostID=74482</wfw:commentRss><description>&lt;P&gt;Recently I had to work on customizing an ASP.NET Calendar control by adding text to the day cells for my team's &lt;A href="http://blogs.msdn.com/monicaboris/archive/2004/02/17/75142.aspx"&gt;AppWeek&lt;/A&gt; project. This proved to be not as straight-forward as I thought so here is what I did in case someone else might want to do the same.&lt;/P&gt;
&lt;P&gt;The best place to modify the text in a cell seems to be the DayRender event handler. So the first thing I tried was to just modify the e.Cell.Text property like this:&lt;/P&gt;
&lt;P&gt;void Calendar1_DayRender(object sender, DayRenderEventArgs e)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.Cell.Text += &amp;#8220;My text&amp;#8221;;&lt;/P&gt;
&lt;P&gt;} &lt;/P&gt;
&lt;P&gt;The main problem was that after adding text to a day cell in the control I wasn't able to select that day by clicking on the day number. Here is what you can do if you still want the select day functionality:&lt;/P&gt;
&lt;P&gt;void Calendar1_DayRender(object sender, DayRenderEventArgs e)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AddTextToDayCell(e, Datetime.Today, &amp;#8220;MyText&amp;#8220;);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;void AddTextToDayCell(DayRenderEventArgs e, Datetime d, string text)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(e.Day.Date == d.Date)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string ID = ((System.TimeSpan)(e.Day.Date - new DateTime(2000, 1, 1))).Days.ToString();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.Cell.Text = "&amp;lt;a href=\"javascript:__doPostBack('Calendar1','" + ID + "')\" style=\"color:#663399\"&amp;gt;" + e.Day.DayNumberText; //assuming the name of the calendar control is Calendar1. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.Cell.Text +=text;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;} &lt;/P&gt;
&lt;P&gt;If you want your new text to act as a link to some other URL, you could modify the AddTextToCell function as follows:&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;private void Calendar1_DayRender(object sender, System.Web.UI.WebControls.DayRenderEventArgs e)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddTextToDayCell(e, DateTime.Today, "MyText", "&lt;A href="http://www.msn.com/"&gt;http://www.msn.com&lt;/A&gt;"); //this will add the MyText link to &lt;A href="http://www.msn.com/"&gt;http://www.msn.com&lt;/A&gt; to the current day's cell&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;void AddTextToDayCell(DayRenderEventArgs e, DateTime d, string text, string URL)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(e.Day.Date == d.Date)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string ID = ((System.TimeSpan)(e.Day.Date - new DateTime(2000, 1, 1))).Days.ToString();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.Cell.Text = "&amp;lt;a href=\"javascript:__doPostBack('Calendar1','" + ID + "')\" style=\"color:#663399\"&amp;gt;" + e.Day.DayNumberText;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.Cell.Text += "&amp;lt;br&amp;gt; &amp;lt;a href=\""+ URL + "\"&amp;gt;" + text;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;} &lt;/P&gt;
&lt;P&gt;Hope you'll find this helpful. Btw, Microsoft is not liable in any way in case you have any trouble after using this code :)&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=74482" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/monicaboris/archive/tags/ASP+.NET/default.aspx">ASP .NET</category></item></channel></rss>