Hi,
I am coding a calendar that has to color code the days depending on their state. A day can have five possible states.
The way I am doing this is by overriding the DayRender method on serverside and adding the css style to the cell's CssClass collection like this:
| c.CssClass = registeredHours >= capasity ? "Calendar_Day_CapacityReached" : "Calendar_Day_CapacityNotReached"; |
The result in HTML is this:
| <td class="radCalDefault_SSN Calendar_Day_NoCapacity" ...> |
My problem is that when I select one day the calendar empties the class attribute of the cell with a client side script and puts the "radCalSelect_SSN" css class instead. The result is this:
| <td class="radCalSelect_SSN" ...> |
And because my css class gets removed, the day loses its color coding when it is selected.
4 Answers, 1 is accepted
0
plamen
Top achievements
Rank 1
answered on 24 Apr 2008, 03:53 PM
hi:)
I would suggest you to use SpecialDays
Here is an example:
Regards...
<John:Peel />
I would suggest you to use SpecialDays
Here is an example:
| <div> |
| <telerik:RadCalendar ID="RadCalendar1" runat="server"> |
| <SpecialDays> |
| <telerik:RadCalendarDay Date="04/25/2008"> |
| <ItemStyle BackColor="red" /> |
| </telerik:RadCalendarDay> |
| </SpecialDays> |
| </telerik:RadCalendar> |
| </div> |
Regards...
<John:Peel />
0
Henning
Top achievements
Rank 1
answered on 24 Apr 2008, 04:52 PM
Hi :)
This doesn't help, because what this renders in HTML is
and when the day is selected both the class and style attributes are emptied and the radCalSelect_SSN class is set like this:
This implementation also looses the color coding of the cell/day when the day is selected.
This doesn't help, because what this renders in HTML is
| <td class="radCalDefault_SSN" style="background-color: Red;" ..> |
and when the day is selected both the class and style attributes are emptied and the radCalSelect_SSN class is set like this:
| <td class="radCalSelect_SSN" style="" ...> |
This implementation also looses the color coding of the cell/day when the day is selected.
0
plamen
Top achievements
Rank 1
answered on 25 Apr 2008, 03:42 PM
hi :)
You can use OnDateSelecting client event. Here is an example:
Thank you...
<John:Peel />
You can use OnDateSelecting client event. Here is an example:
| <%@ Page Language="C#" AutoEventWireup="true" %> |
| <%@ Register Assembly="RadCalendar.Net2" Namespace="Telerik.WebControls" TagPrefix="rad" %> |
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml" > |
| <head runat="server"> |
| <title>Untitled Page</title> |
| <style type="text/css"> |
| .MyCssClass |
| { |
| background-color: red; |
| } |
| </style> |
| <script type="text/javascript"> |
| function DateSelecting(sender, args) |
| { |
| if (args.RenderDay.Date[2] == 9) |
| return false; |
| } |
| </script> |
| <script runat="server"> |
| protected void RadCalendar1_DayRender(object sender, Telerik.WebControls.Base.Calendar.Events.DayRenderEventArgs e) |
| { |
| if (e.Day.Date.Day == 9) |
| { |
| e.Cell.CssClass = "MyCssClass"; |
| } |
| } |
| </script> |
| </head> |
| <body> |
| <form id="form1" runat="server"> |
| <div> |
| <rad:RadCalendar |
| ID="RadCalendar1" |
| runat="server" |
| OnDayRender="RadCalendar1_DayRender"> |
| <ClientEvents OnDateSelecting="DateSelecting" /> |
| </rad:RadCalendar> |
| </div> |
| </form> |
| </body> |
| </html> |
Thank you...
<John:Peel />
0
Henning
Top achievements
Rank 1
answered on 28 Apr 2008, 02:13 PM
This works, but does not select the day so I don't know which day is selected in on the server side.
By overriding PerformSelect I can stop the style being changed on client side, but when the calendars renders after the postback it removes my cssclass and inserts the radCalSelect class instead.
By overriding PerformSelect I can stop the style being changed on client side, but when the calendars renders after the postback it removes my cssclass and inserts the radCalSelect class instead.
| <script type="text/javascript"> |
| window.onload = function() |
| { |
| Telerik.Web.UI.Calendar.RenderDay.prototype.PerformSelect = function(select) |
| { |
| if (null == select) |
| select = true; |
| if (this.IsSelected != select) |
| { |
| var eventArgs = |
| new Telerik.Web.UI.CalendarDateSelectingEventArgs(select, this); |
| this.RadCalendar.raise_dateSelecting(eventArgs); |
| if (eventArgs.get_cancel()) |
| { |
| return false; |
| } |
| this.IsSelected = select; |
| // var cellStyle = this.GetDefaultItemStyle(); |
| // |
| // if (cellStyle) |
| // { |
| // this.DomElement.className = cellStyle[1]; |
| // this.DomElement.style.cssText = cellStyle[0]; |
| // } |
| if (select) |
| { |
| this.RadCalendar.Selection.Add(this.get_date()); |
| } |
| else |
| { |
| this.RadCalendar.Selection.Remove(this.get_date()); |
| } |
| this.RadCalendar.raise_dateSelected(new Telerik.Web.UI.CalendarDateSelectedEventArgs(this)); |
| } |
| }; |
| } |
| </script> |