Events Calender Help...
I am working with the new Sitefinity 4.0 for the first time and all is going well. Part of the project is an events calendar and I am having trouble connecting my Events I create to a RadControl Calendar. Are there any blogs, examples, or discussions on the subject in 4.0 before I go getting into the code? It kind of seemed like the two controls would play nice together in a strait forward way.
I would like a calendar on the left with the events to show up and perhaps a detailed description of the events on the right using the Events control.
Thanks for any help,
Charles
The Intranet Starter Kit has events module....
Have a look at it... It might give you some clues...
Hey Charles,
I'm trying to perform a similar task with the Calendar in Sitefinity 4.0. Have you had any luck getting the calendar to interact with the events?
Thanks,
Jeff
Not really...
I just formated the Event to look like a calender entry... I was looking for a little more detail to my question but did not get it so I just did what I could because I just don't have time right now to research it.. When I get this project done I will go back and search around... If I find something I will post it...
Charles
Hey Charles,
Would you mind posting a link to the calendar that you are using?
Thanks,
Jeff
Not using a calendart yet... i just formated the event widget to look like a calendar entry. I will go back later and hook in the calendar if I figure it out. <see pic>
Charles
Hi charles and Jeffrey,
That is a tough one. What I could suggest you is to use the RadScheduler for ASP.NET in a Month View mode and link it to the Events.
Please see the code samples below for further reference in building your EventsCalendar widget as a user control.
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="EventsCalendar.ascx.cs" Inherits="SitefinityWebApp.MyControls.EventsCalendar" %><telerik:RadScheduler runat="server" ID="Scheduler1" SelectedView="MonthView"></telerik:RadScheduler>using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Telerik.Web.UI;using Telerik.Sitefinity.News.Model;using Telerik.Sitefinity;using Telerik.Sitefinity.GenericContent.Model;namespace SitefinityWebApp.MyControls public partial class EventsCalendar : System.Web.UI.UserControl protected void Page_Load(object sender, EventArgs e) var events = App.WorkWith().Events().Where(n => n.Status == ContentLifecycleStatus.Live).Get().ToList(); Telerik.Sitefinity.Events.Model.Event ev; Scheduler1.DataSource = events; Scheduler1.DataKeyField = "Id"; Scheduler1.DataSubjectField = "Title"; Scheduler1.DataStartField="EventStart"; Scheduler1.DataEndField="EventEnd"; Scheduler1.DataBind(); Hi Boyan,
This code is perfect! It solved my problem. I am now trying to figure out how to tie it to a details page. Any ideas?
I'll post the full VB.net code for my control when I finish this little project.
Hi David Arnold,
Do you mind sharing with me some more details on the exact use case scenario you want to implement, so that I can give you a more focused answer. Thanks in advance.
Greetings,
Boyan Barnev
the Telerik team
Hi Boyan,
I submitted a ticket on this issue last night, but basically I have a few issues and one really bad work-around.
I have a radscheduler and it shows me one event (not all of the events?) from SiteFinity. I need to be able to link each event to the details page for that event. I think it's called EventView page in SiteFinity. I have listed my code at the bottom of this post.
My problems are:
1. Only one event shows up, not all of them
2. If an event start date changes, my link will break
3. Cannot go to another month (gives databinding error)
Here's my control:
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="CalendarView.ascx.vb" Inherits="Controls_CalendarView" %> <telerik:RadScheduler runat="server" ID="Scheduler1" SelectedView="MonthView" AllowDelete="false" AllowEdit="false" AllowInsert="false" ShowViewTabs="false" OnClientNavigationCommand="OnClientNavigationCommand"> <AppointmentTemplate> <asp:HyperLink ID="hyp1" runat="server" Text='<%# Eval("Subject") %>' NavigateUrl='<%# getURL(Eval("Start"), Eval("Subject"))%>' /> </AppointmentTemplate> </telerik:RadScheduler> <script language="javascript"> function OnClientNavigationCommand(sender, eventArgs) // 7 = SwitchToDayView if (eventArgs.get_command() == 7) eventArgs.set_cancel(true); </script>Imports System Imports System.Collections.Generic Imports System.Linq Imports System.Web Imports System.Web.UI Imports System.Web.UI.WebControls Imports Telerik.Web.UI Imports Telerik.Sitefinity.News.Model Imports Telerik.Sitefinity Imports Telerik.Sitefinity.GenericContent.Model Partial Class Controls_CalendarView Inherits System.Web.UI.UserControl Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load Dim events = App.WorkWith().Events().Where(Function(n) n.Status = ContentLifecycleStatus.Live).[Get]().ToList() '--- was in example code, but not used anywhere? Dim ev As Telerik.Sitefinity.Events.Model.Event Scheduler1.DataSource = events Scheduler1.DataKeyField = "Id" Scheduler1.DataSubjectField = "Title" Scheduler1.DataStartField = "EventStart" Scheduler1.DataEndField = "EventEnd" Scheduler1.DataBind() End Sub Public Function getURL(eventDate As Date, title As String) As String Dim _URL As String _URL = "/" & Year(eventDate) If Month(eventDate).ToString.Length = 1 Then _URL += "/0" & Month(eventDate) Else _URL += "/" & Month(eventDate) End If If Day(eventDate).ToString.Length = 1 Then _URL += "/0" & Day(eventDate) Else _URL += "/" & Day(eventDate) End If _URL += "/" & LCase(Replace(title, " ", "-")) Return "~/calendar-view/event-details/" & _URL End Function End ClassHi David Arnold,
Please check the provided code sample below, it should offer a solution to all of the listed problems.
First, enclosing the RadScheduler in a RadAjaxPanel and declaring the DataKeyField , DataSubjectField , DataStartField , and DataEndField properties in the template should fix the DataBind error you are receiving when you do a postback (for instance when switching to another date/view/month etc.)
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RadScheduler.ascx.cs" Inherits="SitefinityWebApp.Controls.RadScheduler" %><telerik:RadAjaxPanel runat="server"><telerik:RadScheduler runat="server" ID="Scheduler1" DataKeyField = "Id" DataSubjectField = "Title" DataStartField = "EventStart" DataEndField = "EventEnd" OnAppointmentCreated="Scheduler1_AppointmentCreated"> <AppointmentTemplate> <asp:HyperLink id="eventDetailsLink" runat="server" /> </AppointmentTemplate></telerik:RadScheduler></telerik:RadAjaxPanel>using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Telerik.Sitefinity;using Telerik.Sitefinity.GenericContent.Model;using Telerik.Sitefinity.Modules.Events;using Telerik.Sitefinity.Events.Model;namespace SitefinityWebApp.Controls public partial class RadScheduler : System.Web.UI.UserControl protected void Page_Load(object sender, EventArgs e) Scheduler1.DataSource = GetSourceItems(); protected virtual IList<Event> GetSourceItems() var list = new List<Event>(); list = App.WorkWith().Events().Where(c => c.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live).Get().ToList(); return list; public string SinglePage get; set; public void Scheduler1_AppointmentCreated(object sender, Telerik.Web.UI.AppointmentCreatedEventArgs e) var EManager = EventsManager.GetManager(); var c = (HyperLink)e.Container.FindControl("eventDetailsLink"); var data = EManager.GetEvent(new Guid(e.Appointment.ID.ToString())); c.Text = data.Title; c.NavigateUrl = SinglePage + data.Urls.Where(u => u.RedirectToDefault == false).SingleOrDefault().Url; Hi Boyan,
Thanks so much for pointing me in the right direction! I had a few issues with your code. I converted it to VB.net and wanted to post my code for other users:
User control:
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="CalendarView.ascx.vb" Inherits="Controls_CalendarView" %><telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server"> <telerik:RadScheduler runat="server" ID="Scheduler1" SelectedView="MonthView" AllowDelete="false" AllowEdit="false" AllowInsert="false" ShowViewTabs="false" DataKeyField = "Id" DataSubjectField = "Title" DataStartField = "EventStart" DataEndField = "EventEnd" OnAppointmentCreated="Scheduler1_AppointmentCreated" OnClientNavigationCommand="OnClientNavigationCommand" > <AppointmentTemplate> <asp:HyperLink ID="eventDetailsLink" runat="server" /> </AppointmentTemplate> </telerik:RadScheduler></telerik:RadAjaxPanel><script language="javascript"> function OnClientNavigationCommand(sender, eventArgs) // 7 = SwitchToDayView if (eventArgs.get_command() == 7) eventArgs.set_cancel(true); </script>Imports SystemImports System.Collections.GenericImports System.LinqImports System.WebImports System.Web.UIImports System.Web.UI.WebControlsImports Telerik.SitefinityImports Telerik.Sitefinity.GenericContent.ModelImports Telerik.Sitefinity.Modules.EventsImports Telerik.Sitefinity.Events.ModelPartial Class Controls_CalendarView Inherits System.Web.UI.UserControl Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load Scheduler1.DataSource = GetSourceItems() End Sub Protected Overridable Function GetSourceItems() As IList(Of [Event]) Dim list = New List(Of [Event])() list = App.WorkWith().Events().Where(Function(c) c.Status = Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live).[Get]().ToList() Return list End Function Public Property SinglePage() As String Get Return m_SinglePage End Get Set(value As String) m_SinglePage = Value End Set End Property Private m_SinglePage As String = "~/calendar-view/events-detail/" Public Sub Scheduler1_AppointmentCreated(sender As Object, e As Telerik.Web.UI.AppointmentCreatedEventArgs) Dim EManager = EventsManager.GetManager() Dim c = DirectCast(e.Container.FindControl("eventDetailsLink"), HyperLink) Dim data = EManager.GetEvent(New Guid(e.Appointment.ID.ToString())) c.Text = data.Title c.NavigateUrl = SinglePage + data.Urls.Where(Function(u) u.RedirectToDefault = False).FirstOrDefault().Url End SubEnd ClassWhat property will allow it to open in Month tab?
in otherwords, I want to see the Month view when I come to the page.
THanks
Hello Nana,
If you declare the SelectedView property to be equal to MonthView, this should ensure that RadScheduler will load initially in a month view mode. For more information on setting different view modes, please check this article from our documentation.
Greetings,
Boyan Barnev
the Telerik team
Thank you. I was able to implement sucessfully. Only that when I click on the event within the calender It goes to a url that is not within the cms.
am I supposed to enter anything in the single page property?
Hi Nana,
I have recorded a sample video demonstrating all the steps necessary for setting up the control on a Sitefinity project, please review them and let me know if any problems persist. Just a couple of things I'd like to stress on:
1. Make sure you are inserting the control in the proper folder, and then you are specifying the correct relative path to it
2. You'll need to substitute the .SingleOrDefault() filter in the lambda expression with .FirstOrDefault() to avoid exceptions when there are multiple Urls in the collection for that Event
3. You'll need to specify a value for the SinglePage property of the widget - it should be any page where you have dropped an Events widget, so when clicked from the Scheduler, the event can be properly opened.
Greetings,
Boyan Barnev
the Telerik team
Thanks Boyan
I understand your video perfectly.
My situation however is a bit different.
My events are categorized and are displayed on separate pages for each category (three) so in the SinglePage I cannot just put any page with an events control. The link has to go to the specific page and I have three event pages (categories.)
What else can I do?
Hi Nana,
In that case you can modify the code to get the category associated with the event item. You can get the category by using our extension method GetValue() (you will need to add a reference to Telerik.Sitefinity.Model;), for example:
var data = EventsManager.GetManager().GetEvent(new Guid()); var category = data.GetValue("Category");Thank you for being the most amazing .NET community! Your unfailing support is what helps us charge forward! We'd appreciate your vote for Telerik in this year's DevProConnections Awards. We are competing in mind-blowing 20 categories and every vote counts! VOTE for Telerik NOW >>
Hi Boyen,
I have been having difficulty with this and need more assistance if you do not mind
I have
I have the event in a list
so this is what I have for
foreach (Event eventItem in list)
var data = EventsManager.GetManager().GetEvent(eventitem.id);
var category=data.getvalue("category")
now passing the value cateogory to the taxonomy manager is not working
I use
var taxon =taxManager.GetTaxon(category)
I get type cast issues. please help further.
Thanks
Hello Nana,
You can store the Category Ids in a TrackedList of Guids like this:
var categoryIds = evnt.GetValue<TrackedList<Guid>>("Categories");foreach(var catId in categoryIds) var category = TaxonomyManager.GetManager().GetTaxonomy(catId); var myCategory1Id = TaxonomyManager.GetManager().GetTaxonomies<HierarchicalTaxonomy>().Where(t => t.Name == "MyCategoryName").SingleOrDefault().Id;var allEvents = App.WorkWith().Events() .Where(t => t.Status == ContentLifecycleStatus.Live) .Where(t => t.GetValue<TrackedList<Guid>>("Category").Contains( myCategory1Id )).Get().ToList();Hi, I am still not on the same page
var allEvents = App.WorkWith().Events()
.Where(t => t.Status == Telerik.Sitefinity.GenericContent.Model.
ContentLifecycleStatus.Live)
.Get()
.ToList();
foreach
(Event eventItem in allEvents)
var taxonManager = TaxonomyManager.GetManager();
var r = new TableRow();
var c = new TableCell();
var eventcat = eventItem.GetValue<Guid>("Category");
var catname = taxonManager.GetTaxa<HierarchicalTaxon>().Where(t => t.Id == eventcat).SingleOrDefault();
c.Controls.Add(
new LiteralControl(eventItem.Title + catname.Name + " " + eventItem.EventStart + "-" + " " + eventItem.EventEnd + "<br />"));
r.Cells.Add(c);
Table1.Rows.Add(r);
My event is to category is 1 to 1
and I am thinking that the above code should work
but
var eventcat = eventItem.GetValue<Guid>("Category"); gives me a specified cast is not valid
so does
Guid eventcat = eventItem.GetValue<Guid>("Category");
Thank you. I kinda figured it out!
Hi Boyan,
I created a custom widget containing the RadScheduler. But I have this issue when inserting a new appoinment. I get the following javascript error when I hit save on insert new appoinment dialog. Any idea why? The type of data source of the scheduler is IList<Event>. Server side RadScheduler1_AppointmentInsert event is not getting called. but Update and Delete works fine without any issues.
Error:
Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerServerErrorException: Invalid object passed in, member name expected. (46): "command":"InsertAppointment","appointment":,"Subject":"this%20test","Description":"","Resources":[],"RecurrenceState":0,"startDate":"201110111130","endDate":"201110111230"<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CalendarControl.ascx.cs" Inherits="SitefinityWebApp.CalendarControl" %><%@ Register Assembly="Telerik.Sitefinity" Namespace="Telerik.Sitefinity.Web.UI" TagPrefix="telerik" %><telerik:RadAjaxLoadingPanel runat="server" ID="RadAjaxLoadingPanel1" Skin="Default" /><telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" LoadingPanelID="RadAjaxLoadingPanel1"> <telerik:RadScheduler runat="server" ID="RadScheduler1" DataKeyField="Id" DataSubjectField="Title" DataStartField="EventStart" DataEndField="EventEnd" OnAppointmentCreated="RadScheduler1_AppointmentCreated" OnAppointmentDelete="RadScheduler1_AppointmentDelete" OnAppointmentUpdate="RadScheduler1_AppointmentUpdate" OnAppointmentInsert="RadScheduler1_AppointmentInsert"> <AppointmentTemplate> <div class="rsAptSubject"> <%# Eval("Subject") %> </div> <asp:Label runat="server" ID="AssignedTo" /> </AppointmentTemplate> </telerik:RadScheduler></telerik:RadAjaxPanel>Hi Duneel,
Can you please share with us how you're creating the appointment - do you subscribe to OnClientTimeSlotClick and open the Advanced edit form? If so, the showInsertFormAt() method should also fire the corresponding FormCreating, AppointmentCreated and FormCreated server-side events. Maybe if you could fill us in with some more information on your exact implementation that would help us give you a more specific advice.
All the best,
Boyan Barnev
the Telerik team
Hi Duneel,
Just a quick follow-up, I believe I have managed to reproduce the issue at hand, can you please try wrapping your RadScheduler in RadAjaxPanel and let us know if the issue still persist?
All the best,
Boyan Barnev
the Telerik team
Hi Boyan,
RadSchedular is already wrapped inside RadAjaxPanel. Please have a look at the Widget Template I posted. Also I'm not using any client-side function. Everything is done in the server side events I have binded in RadSchedular (please check the widget template). All the other events fires but not the OnAppoinmentCreated, instead I get that javascript error.
Thanks!
Duneel
Any update on this please?
Thanks!
Duneel
Hi Duneel,
Thank you for the follow-up, would it be possible for you to send us the control so we can debug this problematic behavior? Thanks in advance.
Kind regards,
Boyan Barnev
the Telerik team
Sure. Here you go...
CalendarControl.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CalendarControl.ascx.cs" Inherits="SitefinityWebApp.CalendarControl" %><%@ Register Assembly="Telerik.Sitefinity" Namespace="Telerik.Sitefinity.Web.UI" TagPrefix="telerik" %><telerik:RadAjaxLoadingPanel runat="server" ID="RadAjaxLoadingPanel1" Skin="Default" /><telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" LoadingPanelID="RadAjaxLoadingPanel1"> <telerik:RadScheduler runat="server" ID="RadScheduler1" DataKeyField="Id" DataSubjectField="Title" DataStartField="EventStart" DataEndField="EventEnd" OnAppointmentCreated="RadScheduler1_AppointmentCreated" OnAppointmentDelete="RadScheduler1_AppointmentDelete" OnAppointmentUpdate="RadScheduler1_AppointmentUpdate" OnAppointmentInsert="RadScheduler1_AppointmentInsert" SelectedView="WeekView"> <AppointmentTemplate> <div class="rsAptSubject"> <%# Eval("Subject") %> </div> <asp:Label runat="server" ID="AssignedTo" /> </AppointmentTemplate> </telerik:RadScheduler></telerik:RadAjaxPanel>
CalendarControl.ascx.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Telerik.Sitefinity;using Telerik.Sitefinity.GenericContent.Model;using Telerik.Sitefinity.Events.Model;using Telerik.Web.UI;using Telerik.Sitefinity.Security;using Telerik.Sitefinity.Security.Model;using Telerik.Sitefinity.Modules.Events;namespace SitefinityWebApp public partial class CalendarControl : System.Web.UI.UserControl public string SinglePage get; set; protected void Page_Load(object sender, EventArgs e) GetLoggedInUser(); RadScheduler1.DataSource = GetSourceItems(); protected virtual IList<Event> GetSourceItems() var list = new List<Event>(); list = App.WorkWith().Events().Where(c => c.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live).Get().ToList(); return list; protected void RadScheduler1_AppointmentCreated(object sender, AppointmentCreatedEventArgs e) Resource user = e.Appointment.Resources.GetResourceByType("User"); if (user != null) Label assignedTo = (Label)e.Container.FindControl("AssignedTo"); assignedTo.Text = "Booked By: " + user.Text; // Generate tooltip e.Appointment.ToolTip = GenerateTooltip(e.Appointment); protected void RadScheduler1_AppointmentDelete(object sender, SchedulerCancelEventArgs e) // Delete appoinmnet if (e.Appointment != null) DeleteAppoinment(e.Appointment); protected void RadScheduler1_AppointmentUpdate(object sender, AppointmentUpdateEventArgs e) // Update appoinment if (e.ModifiedAppointment != null) UpdateAppoinment(e.ModifiedAppointment); //CreateAppoinment(e.ModifiedAppointment); protected void RadScheduler1_AppointmentInsert(object sender, SchedulerCancelEventArgs e) //if (e.Appointment.Resources.Count < 1) // e.Appointment.Resources.Add(RadScheduler1.Resources.GetResource("Calendar", "1")); if (e.Appointment.Subject == String.Empty) e.Cancel = true; private User GetLoggedInUser() SitefinityPrincipal sp = SecurityManager.GetCurrentUser(); User user = UserManager.FindUser(sp.UserId); return user; private void CreateAppoinment(Appointment appoinment) if (String.IsNullOrEmpty(appoinment.Subject)) return; //Initialize the EventsManager with the default provider EventsManager manager = new EventsManager(); //Create an Event Event eventItem = manager.CreateEvent(); //Set the newly created event eventItem.Title = appoinment.Subject; eventItem.EventStart = appoinment.Start; eventItem.EventEnd = appoinment.End; eventItem.PublicationDate = DateTime.Today; eventItem.ExpirationDate = DateTime.Today.AddDays(365); eventItem.Content = appoinment.Subject; User user = GetLoggedInUser(); if (user != null) eventItem.ContactName = user.FirstName + " " + user.LastName; //Generate an URL for the content item and Save the changes. manager.RecompileItemUrls<Event>(eventItem); //up to now, the item is in Draft State. We have to call Publish method to publish it. manager.Publish(eventItem); manager.SaveChanges(); RadScheduler1.DataSource = GetSourceItems(); private void UpdateAppoinment(Appointment appoinment) if (appoinment.Subject == null) return; EventsManager manager = EventsManager.GetManager(); Event eventItem = manager.GetEvents() .Where(t => t.Id == (Guid)appoinment.ID) .FirstOrDefault(); eventItem = manager.GetMaster(eventItem); Event temp = manager.CheckOut(eventItem); temp.Title = appoinment.Subject; temp.EventStart = appoinment.Start; temp.EventEnd = appoinment.End; temp.Content = appoinment.Subject; eventItem = manager.CheckIn(temp); manager.RecompileItemUrls<Event>(eventItem); manager.Publish(eventItem); manager.SaveChanges(); RadScheduler1.DataSource = GetSourceItems(); private void DeleteAppoinment(Appointment appoinment) if (appoinment.ID == null) return; EventsManager manager = EventsManager.GetManager(); Event eventItem = manager.GetEvents() .Where(t => t.Id == (Guid)appoinment.ID) .FirstOrDefault(); eventItem = manager.GetMaster(eventItem); manager.DeleteEvent(eventItem); manager.SaveChanges(); RadScheduler1.DataSource = GetSourceItems(); private string GenerateTooltip(Appointment appoinment) string tooltip = ""; tooltip += String.Format("0 - 1", appoinment.Start.ToShortTimeString(), appoinment.End.ToShortTimeString()); return tooltip;
CalendarControl.ascx.designer.cs
//------------------------------------------------------------------------------// <auto-generated>// This code was generated by a tool.//// Changes to this file may cause incorrect behavior and will be lost if// the code is regenerated. // </auto-generated>//------------------------------------------------------------------------------namespace SitefinityWebApp public partial class CalendarControl /// <summary> /// RadAjaxLoadingPanel1 control. /// </summary> /// <remarks> /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// </remarks> protected global::Telerik.Web.UI.RadAjaxLoadingPanel RadAjaxLoadingPanel1; /// <summary> /// RadAjaxPanel1 control. /// </summary> /// <remarks> /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// </remarks> protected global::Telerik.Web.UI.RadAjaxPanel RadAjaxPanel1; /// <summary> /// RadScheduler1 control. /// </summary> /// <remarks> /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// </remarks> protected global::Telerik.Web.UI.RadScheduler RadScheduler1;
Thanks!
Duneel
Hi Duneel,
Thank you for providing me with the control logic. I've tested both using your control and a one with dummy events, and the functionality seems to be working properly. Please find attached a short video I've recorded while testing some of this functionality, and let me know if I'm missing anything. The only change that I've introduced is that I'm using a customized version of RajAjaxPanel which ensures that the Ajax requests will complete properly The custom RajAjaxPanel is built using the same approach as the one with UpdatePanel described in this blog post. For your convenience I'm attaching the sample Scheduler and custom RadAjaxPanel along with the video.
Kind regards,
Boyan Barnev
the Telerik team
[View:/cfs-file/__key/communityserver-discussions-components-files/295/307731_5F00_Controls.rar:320:240]
[View:/cfs-file/__key/communityserver-discussions-components-files/295/307732_5F00_RadScheduler_2D00_Sitefinity_2D00_Ajax.rar:320:240]
This is a great solution. I am having a problem with this - either my events are starting a day late in monthview or ending a day late. I am not sure if this is to do with needing the .tolocal?
Hello,
You can compare the values saved into the databse for Event Start and Event End. You can also create a simple page where you use Sitefinity's API and show all events and the above mentioned values to see if there are some time differences. EventStart and EventEnd and properties of the data item so you can put a breakpoint inside a method that binds the RadScheduler to see if there would be a difference.
Kind regards,
Ivan Dimitrov
the Telerik team