Hi Support,
We liked your implementation of Scheduler control, It
has some really cool features. we are planning to use it in one of our
apps, so giving it a try with your most recent Control trials.
We are using the Scheduler with Sql Database.
The Table structure we followed was taken from here
Now When i create the appointment without Recurrence all works fine.
When we try to create appointment with recurrence the appointments are
not getting displayed the first time. As i click on any of the
links/buttons provided
The datasource we used for binding is generic List of business object called Appointment in our business layer.
I am pasting the markup from our implementation below
The Codebehind where the scheduler gets binded looks like below
The code to insert and edit appointments are in the following handlers
Please help us with this issue. we are looking forward to hear from you soon.
Regards,
Vikas Joshi
Beyondkey pvt. Ltd.
India
We liked your implementation of Scheduler control, It
has some really cool features. we are planning to use it in one of our
apps, so giving it a try with your most recent Control trials.
We are using the Scheduler with Sql Database.
The Table structure we followed was taken from here
Now When i create the appointment without Recurrence all works fine.
When we try to create appointment with recurrence the appointments are
not getting displayed the first time. As i click on any of the
links/buttons provided
The datasource we used for binding is generic List of business object called Appointment in our business layer.
I am pasting the markup from our implementation below
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="RadAjaxManager1_AjaxRequest"><br> <AjaxSettings><br> <telerik:AjaxSetting AjaxControlID="RadAppointments"><br> <UpdatedControls><br> <telerik:AjaxUpdatedControl ControlID="RadAppointments" LoadingPanelID="RadAjaxLoadingPanel1"></telerik:AjaxUpdatedControl><br> <telerik:AjaxUpdatedControl ControlID="timer1" LoadingPanelID="RadAjaxLoadingPanel1"></telerik:AjaxUpdatedControl><br> </UpdatedControls><br> </telerik:AjaxSetting><br> </AjaxSettings><br> </telerik:RadAjaxManager><br> <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server"><br> </telerik:RadAjaxLoadingPanel><br> <telerik:RadScheduler ID="RadAppointments" Visible="true" runat="server" OverflowBehavior="Expand" Height="100%" DayStartTime="07:00:00" DayEndTime="19:00:00" RenderMode="Auto" EnableAdvancedForm="true"<br> OnClientFormCreated="OnClientFormCreated" OnAppointmentInsert="RadAppointments_AppointmentInsert" OnAppointmentUpdate="RadAppointments_AppointmentUpdate" EnableDescriptionField="true" OnAppointmentDelete="RadAppointments_AppointmentDelete"<br> AdvancedForm-EnableResourceEditing="true" CustomAttributeNames="CustomerName" StartInsertingInAdvancedForm="true" StartEditingInAdvancedForm="true" ShowFullTime="true"<br> EnableTheming="false" OnFormCreated="RadAppointments_FormCreated" DataRecurrenceField="RecurrenceRule" DataRecurrenceParentKeyField="RecurrenceParentID"><br><br> <AdvancedForm Modal="true" EnableCustomAttributeEditing="false" EnableResourceEditing="true"></AdvancedForm><br><br> <ResourceTypes><br> <telerik:ResourceType KeyField="Type" Name="Type" TextField="Type" ForeignKeyField="Type" DataSourceID="odsTypes"></telerik:ResourceType><br> <telerik:ResourceType KeyField="CustomerName" Name="CustomerName" ForeignKeyField="CustomerName" TextField="CustomerName" DataSourceID="odsCustomers"></telerik:ResourceType><br> </ResourceTypes><br> <AppointmentTemplate><br> <div style="font-style: italic; width: 100%"><br> Subiect:<br> <%# Eval("Subject") %><br> </div><br> <div style="font-style: italic; width: 100%;"><br> Type:<br> <%# Eval("Type.Text")%><br> </div><br> <div style="font-style: italic; width: 100%;"><br> Buyer Name:<br> <a href="customerlist.aspx" title="View Details"><%# Eval("CustomerName")%><img style="padding-left: 3px;" src="Images/eye.png" alt="view details" /></a><br> </div><br> </AppointmentTemplate><br> <TimeSlotContextMenuSettings EnableDefault="true"></TimeSlotContextMenuSettings><br> <AppointmentContextMenuSettings EnableDefault="true"></AppointmentContextMenuSettings><br> </telerik:RadScheduler><br><br> <asp:ObjectDataSource ID="odsCustomers" runat="server" SelectMethod="GetCustomerlist" TypeName="SqlHelper"></asp:ObjectDataSource><br> <asp:ObjectDataSource ID="odsTypes" runat="server" SelectMethod="getAppointmentType" TypeName="SqlHelper"></asp:ObjectDataSource><br><br><%--End Of markup %-->The Codebehind where the scheduler gets binded looks like below
protected override void OnInit(EventArgs e) { if (!IsPostBack) { InitializeAppointments();}}The code to insert and edit appointments are in the following handlers
protected void RadAppointments_AppointmentInsert(object sender, Telerik.Web.UI.AppointmentInsertEventArgs e) { try { //if (RadAppointments.Appointments.GetAppointmentsInRange(e.Appointment.Start, e.Appointment.End).Count > 0) //{ // e.Cancel = true; // ScriptManager.RegisterStartupScript(Page, GetType(), "alert", "alert('Please choose a different Time for Appointment!');", true); //} if (e.Appointment.Subject == String.Empty) { e.Cancel = true; } if (e.Appointment.Resources.Count == 0) { e.Cancel = true; ScriptManager.RegisterStartupScript(Page, GetType(), "alert", "alert('Please choose appointment Type and Buyer Name!');", true); } if (e.Appointment.Resources.Count == 1) { if (e.Appointment.Resources[0].Type != "Type") { e.Cancel = true; ScriptManager.RegisterStartupScript(Page, GetType(), "alert", "alert('Please choose appointment Type!');", true); } else { e.Cancel = true; ScriptManager.RegisterStartupScript(Page, GetType(), "alert", "alert('Please choose a Buyer Name!');", true); } } Appointment objAppointment = new Appointment(); objAppointment.Title = e.Appointment.Subject; objAppointment.Start = e.Appointment.Start.ToUniversalTime() ; objAppointment.End = e.Appointment.End.ToUniversalTime(); objAppointment.Type = e.Appointment.Resources[0].Key.ToString(); objAppointment.ID_SalesRep = Convert.ToInt64(Session["UserID"]); string customer = e.Appointment.Resources[1].Text.ToString(); int index = customer.IndexOf('-'); Int64 Id = 0; if (index > 0) { Id = Int64.Parse(customer.Substring(0, index)); //customer = customer; //.Substring(index, customer.Length); } objAppointment.ID_Customer = Id; // Convert.ToInt64(e.ModifiedAppointment.Resources[1].Key); objAppointment.CustomerName = customer;//e.ModifiedAppointment.Resources[1].Text.ToString(); //objAppointment.ID_Customer = Convert.ToInt64(e.Appointment.Resources[1].Key); //objAppointment.CustomerName = e.Appointment.Resources[1].Text.ToString(); objAppointment.Description = e.Appointment.Description; objAppointment.RecurrenceRule = e.Appointment.RecurrenceRule; objAppointment.AddAppointment(); InitializeAppointments(); } catch (Exception ex) { e.Cancel = true; Elmah.ErrorSignal.FromCurrentContext().Raise(ex); } } protected void RadAppointments_AppointmentUpdate(object sender, Telerik.Web.UI.AppointmentUpdateEventArgs e) { try { //if (RadAppointments.Appointments.GetAppointmentsInRange(e.ModifiedAppointment.Start, e.ModifiedAppointment.End).Count > 0) //{ // foreach (Telerik.Web.UI.Appointment a in RadAppointments.Appointments.GetAppointmentsInRange(e.ModifiedAppointment.Start, e.ModifiedAppointment.End)) // { // if (a.ID != e.Appointment.ID) // { // e.Cancel = true; // } // } //} if (e.ModifiedAppointment.Subject == String.Empty) { e.Cancel = true; } if (e.ModifiedAppointment.Resources.Count == 0) { e.Cancel = true; ScriptManager.RegisterStartupScript(Page, GetType(), "alert", "alert('Please choose appointment Type and Buyer Name!');", true); } if (e.ModifiedAppointment.Resources.Count == 1) { if (e.ModifiedAppointment.Resources[0].Type != "Type") { e.Cancel = true; ScriptManager.RegisterStartupScript(Page, GetType(), "alert", "alert('Please choose appointment Type!');", true); } else { e.Cancel = true; ScriptManager.RegisterStartupScript(Page, GetType(), "alert", "alert('Please choose a Buyer Name!');", true); } } Appointment objAppointment = Appointment.GetAppointment(Convert.ToInt64(e.ModifiedAppointment.ID)); objAppointment.ID = objAppointment.ID; objAppointment.Title = e.ModifiedAppointment.Subject; objAppointment.Start = e.ModifiedAppointment.Start.ToUniversalTime(); objAppointment.End = e.ModifiedAppointment.End.ToUniversalTime(); objAppointment.ID_SalesRep = Convert.ToInt64(Session["UserID"]); string customer = e.ModifiedAppointment.Resources[1].Text.ToString(); int index = customer.IndexOf('-'); Int64 Id = 0; if (index > 0) { Id = Int64.Parse(customer.Substring(0, index)); //customer = customer; //.Substring(index, customer.Length); } objAppointment.ID_Customer = Id; // Convert.ToInt64(e.ModifiedAppointment.Resources[1].Key); objAppointment.CustomerName = customer;//e.ModifiedAppointment.Resources[1].Text.ToString(); objAppointment.Description = e.ModifiedAppointment.Description; objAppointment.UpdateAppointment(); InitializeAppointments(); } catch (Exception ex) { e.Cancel = true; Elmah.ErrorSignal.FromCurrentContext().Raise(ex); } }Please help us with this issue. we are looking forward to hear from you soon.
Regards,
Vikas Joshi
Beyondkey pvt. Ltd.
India