This is a migrated thread and some comments may be shown as answers.

RadScheduler FormCreated and RadSchedulerRecurrenceEditor

5 Answers 241 Views
Scheduler
This is a migrated thread and some comments may be shown as answers.
Lorenzo
Top achievements
Rank 1
Lorenzo asked on 24 Nov 2011, 07:02 PM
Hi I'm setting up a RadScheduler to handle appointments from a SQL DB.
My interface includes, for each appointment, a lot of additional datas so i decided to use AdvancedEditTemplate and AdvancedInsertTemplate to build the appointment interface. Everything went fine till I put a RadSchedulerRecurrenceEditor in the interface to handle Recurring Events.
The problem is here described:
- If I open a simple appointment (no recurrences) and add a recurrence the event get saved correctly.
- if I open an event with recurrences and try to modify the recurrence the event does not get saved...in the sense that the recurrences does not get saved and remain the previous scheduling.

The problem seems to be that when i click the LB_Save LinkButton that triggers the Command "Update" (which is handled by the 

RadScheduler.AppointmentCommand) the event FormCreated gets triggered first and the RadSchedulerRecurrenceEditor.RecurrenceRuleText gets reloaded before it gets Updated....so basically i save again the RecurrenceRule that is already saved. What is strange is that if the Appointment does not contain any RecurrenceRule the new RecurrenceRule gets saved correctly.

I'm out of good ideas on this one. Follows the code.

Scheduler.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Scheduler.aspx.vb" Inherits="Admin_Scheduler" %>
 
<%@ Register src="Header.ascx" tagname="Header" tagprefix="uc" %>
<%@ Register src="Left.ascx" tagname="Left" tagprefix="uc" %>
<%@ Register src="Footer.ascx" tagname="Footer" tagprefix="uc" %>
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<head runat="server">
    <title>CecchiPoint</title>
    <telerik:RadStyleSheetManager id="RadStyleSheetManager" runat="server" />
    <link type="text/css" href="../Resources/StyleBase.css" rel="Stylesheet" />
<telerik:RadScriptBlock runat="server">
<script type="text/javascript" language="javascript">
 
    function Move(sender, eventArgs) {
        var Start = eventArgs.get_newStartTime().format("yyyy/MM/dd HH:mm");
         
        var apt = eventArgs.get_appointment();
        var IdReservation = apt.get_id();
         
        $find("<%=RadAjaxManager.ClientID %>").ajaxRequest('Move|' + Start + '|' + IdReservation);
    }
    function Resize(sender, eventArgs) {
        var Time = eventArgs.get_newTime().format("yyyy/MM/dd HH:mm");
 
        var apt = eventArgs.get_appointment();
        var IdReservation = apt.get_id();
 
        $find("<%=RadAjaxManager.ClientID %>").ajaxRequest('Resize|' + Time + '|' + IdReservation);
    }
</script>
</telerik:RadScriptBlock>
</head>
 
<body>
    <form id="form1" runat="server">
    <telerik:RadScriptManager runat="server" EnableScriptLocalization="true" EnableScriptGlobalization="true"></telerik:RadScriptManager>
         
    <div id="DIV_Main">
        <div id="DIV_Header" class="Titolo1">
 
        <uc:Header runat="server" Title="Servizio prenotazioni" />
 
        </div>
 
        <div id="DIV_Left">
             
            <uc:Left ID="Left" runat="server" />
             
        </div>
 
        <div id="DIV_Filter">
        <telerik:RadToolBar runat="server" Width="100%" Height="32px" ID="RadToolBar_Filter">
            <Items>
                <telerik:RadToolBarButton Text="Filtro prenotazioni: " Enabled="false"></telerik:RadToolBarButton>
                <telerik:RadToolBarButton Value="Spazi">
                    <ItemTemplate>
                        <asp:CheckBox runat="server" ID="Ck_Spazi" Text="Spazi" TextAlign="Right" AutoPostBack="true" Checked="true" />  
                    </ItemTemplate>
                </telerik:RadToolBarButton>
                <telerik:RadToolBarButton Value="Mezzi">
                    <ItemTemplate>
                        <asp:CheckBox runat="server" ID="Ck_Mezzi" Text="Mezzi" TextAlign="Right" AutoPostBack="true" Checked="true" />  
                    </ItemTemplate>
                </telerik:RadToolBarButton>
                <telerik:RadToolBarButton Value="Servizi">
                    <ItemTemplate>
                        <asp:CheckBox runat="server" ID="Ck_Servizi" Text="Servizi" TextAlign="Right" AutoPostBack="true" Checked="true" />
                    </ItemTemplate>
                </telerik:RadToolBarButton>
            </Items>
        </telerik:RadToolBar>
             
        </div>
 
        <div id="DIV_Body">
             
            <telerik:RadAjaxManager runat="server" ID="RadAjaxManager" DefaultLoadingPanelID="LP">
                <AjaxSettings>
                     
                    <telerik:AjaxSetting AjaxControlID="RadScheduler">
                        <UpdatedControls>
                            <telerik:AjaxUpdatedControl ControlID="RadScheduler" UpdatePanelHeight="100%" />
                            <telerik:AjaxUpdatedControl ControlID="RadAjaxManager" UpdatePanelHeight="100%" />
                        </UpdatedControls>
                    </telerik:AjaxSetting>
                     
                    <telerik:AjaxSetting AjaxControlID="Ck_Spazi">
                        <UpdatedControls>
                            <telerik:AjaxUpdatedControl ControlID="RadScheduler" UpdatePanelHeight="100%" />
                            <telerik:AjaxUpdatedControl ControlID="RadAjaxManager" UpdatePanelHeight="100%" />
                        </UpdatedControls>
                    </telerik:AjaxSetting>
                    <telerik:AjaxSetting AjaxControlID="Ck_Mezzi">
                        <UpdatedControls>
                            <telerik:AjaxUpdatedControl ControlID="RadScheduler" UpdatePanelHeight="100%" />
                            <telerik:AjaxUpdatedControl ControlID="RadAjaxManager" UpdatePanelHeight="100%" />
                        </UpdatedControls>
                    </telerik:AjaxSetting>
                    <telerik:AjaxSetting AjaxControlID="Ck_Servizi">
                        <UpdatedControls>
                            <telerik:AjaxUpdatedControl ControlID="RadScheduler" UpdatePanelHeight="100%" />
                            <telerik:AjaxUpdatedControl ControlID="RadAjaxManager" UpdatePanelHeight="100%" />
                        </UpdatedControls>
                    </telerik:AjaxSetting>
                </AjaxSettings>
            </telerik:RadAjaxManager>
 
            <telerik:RadAjaxLoadingPanel runat="server" ID="LP" MinDisplayTime="500" Transparency="0" ZIndex="80000" Width="100%" Height="100%">
                 
            </telerik:RadAjaxLoadingPanel>          
    
               <telerik:RadScheduler ID="RadScheduler" runat="server" Width="100%" Height="100%"
             EnableDescriptionField="True" StartEditingInAdvancedForm="true"
             StartInsertingInAdvancedForm="true" SelectedView="MonthView"
             DayStartTime="07:00" DayEndTime="20:00" AppointmentStyleMode="Default"
             DataKeyField="IdReservation" DataStartField="DateFrom" DataEndField="DateTo"
             DataSubjectField="Subject" CustomAttributeNames="Color" DataRecurrenceField="RecurrenceRule" DataRecurrenceParentKeyField="RecurrenceParentID"
             OnClientAppointmentMoveEnd="Move" OnClientAppointmentResizeEnd="Resize"
             TimeSlotContextMenuSettings-EnableDefault="true" AppointmentContextMenuSettings-EnableDefault="true">
               
             
             <TimeSlotContextMenus>
               <telerik:RadSchedulerContextMenu ID="SchedulerTimeSlotContextMenu" runat="server">
                   <Items>
                       <telerik:RadMenuItem Text="Nuovo nolo" Value="CommandAddAppointment" ImageUrl="../Resources/Images/ico_ServiceAdd_16.png" />              
                       <%--
                       <telerik:RadMenuItem Text="New All Day Event" />
                       <telerik:RadMenuItem IsSeparator="True" />
                       <telerik:RadMenuItem Text="New Recurring Appointment" Value="CommandAddRecurringAppointment" />
                       <telerik:RadMenuItem Text="New Recurring Event" />
                       <telerik:RadMenuItem IsSeparator="True" />--%>
                       <telerik:RadMenuItem Text="Vai a Oggi" Value="CommandGoToToday" />
                       <%--<telerik:RadMenuItem Text="Show 24 hours..." Value="CommandShow24Hours" />--%>
                   </Items>
               </telerik:RadSchedulerContextMenu>
            </TimeSlotContextMenus>
 
             <AdvancedInsertTemplate>
                <div style="padding:2px;border:1px solid #C3C3C3;padding:4px;">
                    <table cellpadding="0" cellspacing="0px" width="100%" border="0">
                        <%--<tr>
                            <td class="CellLabel">Descrizione: (*) 
                                <asp:RequiredFieldValidator ValidationGroup="VG0" runat="server" ControlToValidate="T_Subject" ErrorMessage="*" Display="Dynamic"></asp:RequiredFieldValidator>
                            </td>
                            <td class="CellData">
                                <telerik:RadTextBox runat="server" ID="T_Subject" Width="90%"></telerik:RadTextBox>
                            </td>
                        </tr>--%>
                        <tr>
                            <td class="CellLabel">Da: (*) 
                                <asp:RequiredFieldValidator ValidationGroup="VG0" runat="server" ControlToValidate="DTP_DateFrom" ErrorMessage="*" Display="Dynamic"></asp:RequiredFieldValidator>
                            </td>
                            <td class="CellData">
                                <telerik:RadDateTimePicker runat="server" ID="DTP_DateFrom" DateInput-Width="80px" TimeView-Interval="00:15:00" TimeView-Columns="4"></telerik:RadDateTimePicker>
                                  A: (*) 
                                <asp:RequiredFieldValidator ValidationGroup="VG0" runat="server" ControlToValidate="DTP_DateTo" ErrorMessage="*" Display="Dynamic"></asp:RequiredFieldValidator>
                                <telerik:RadDateTimePicker runat="server" ID="DTP_DateTo" DateInput-Width="80px" TimeView-Interval="00:15:00" TimeView-Columns="4"></telerik:RadDateTimePicker>
                            </td>
                        </tr>
                        <tr>
                            <td class="CellLabel">Nolo: (*) 
                                <asp:RequiredFieldValidator ValidationGroup="VG0" runat="server" ControlToValidate="T_Service" ErrorMessage="*" Display="Dynamic"></asp:RequiredFieldValidator>
                            </td>
                            <td class="CellData">
                                 
                                <div style="float:left;width:380px">
                                <asp:HiddenField runat="server" ID="HF_IdService" Value="" />
                               <telerik:RadTextBox ReadOnly="true" runat="server" ID="T_Service" Width="350px"></telerik:RadTextBox>
                                <asp:HyperLink runat="server" ID="HL_Service">
                                    <asp:Image runat="server" ImageUrl="~/Resources/Images/ico_View_16.png" ImageAlign="AbsMiddle" />
                                </asp:HyperLink>
                                </div>
                                <div style="float:left"><asp:Panel runat="server" ID="P_ServiceColor" Width="30px" Height="20px"></asp:Panel></div>
                                <div style="clear:both">
                                 
                            </td>
                        </tr>
                        <tr>
                            <td class="CellLabel">Assegnatario: (*) 
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator6" ValidationGroup="VG0" runat="server" ControlToValidate="T_Customer" ErrorMessage="*" Display="Dynamic"></asp:RequiredFieldValidator>
                            </td>
                            <td class="CellData">
                                <asp:HiddenField runat="server" ID="HF_IdCustomer" Value="" />
                                <telerik:RadTextBox ReadOnly="true" runat="server" ID="T_Customer" Width="350px"></telerik:RadTextBox>
 
                                <asp:HyperLink runat="server" ID="HL_Customer">
                                    <asp:Image runat="server" ImageUrl="~/Resources/Images/ico_View_16.png" ImageAlign="AbsMiddle" />
                                </asp:HyperLink>
                            </td>
                        </tr>
                        <tr>
                            <td class="CellLabel">Valore del servizio: </td>
                            <td class="CellData">
                                <telerik:RadNumericTextBox ReadOnly="true" runat="server" ID="T_CostDue" Type="Currency" NumberFormat-DecimalDigits="2" EnabledStyle-HorizontalAlign="Right" Width="80px"></telerik:RadNumericTextBox>
                            </td>
                        </tr>
                        <tr>
                            <td class="CellLabel">Costo riparazione: </td>
                            <td class="CellData">
                                <telerik:RadNumericTextBox runat="server" ID="T_RepairCost" Type="Currency" NumberFormat-DecimalDigits="2" EnabledStyle-HorizontalAlign="Right" Width="80px"></telerik:RadNumericTextBox>
                            </td>
                        </tr>
                        <tr>
                            <td class="CellLabel">Quota saldata: </td>
                            <td class="CellData">
                                <telerik:RadNumericTextBox ReadOnly="true" runat="server" ID="T_CostPaid" Type="Currency" NumberFormat-DecimalDigits="2" EnabledStyle-HorizontalAlign="Right" Width="80px"></telerik:RadNumericTextBox>
                                
                            </td>
                        </tr>
                        <tr>
                            <td class="CellLabel">Quota residua: </td>
                            <td class="CellData">
                                <telerik:RadNumericTextBox ReadOnly="true" runat="server" ID="T_CostRemaining" Type="Currency" NumberFormat-DecimalDigits="2" EnabledStyle-HorizontalAlign="Right" Width="80px"></telerik:RadNumericTextBox>
                                
                            </td>
                        </tr>
                        <tr>
                            <td class="CellLabel">Stato contabile: 
                                <%--<asp:RequiredFieldValidator ValidationGroup="VG0" runat="server" ControlToValidate="CB_BillingStatus" ErrorMessage="*" Display="Dynamic"></asp:RequiredFieldValidator>--%>
                            </td>
                            <td class="CellData">
                                <telerik:RadComboBox runat="server" ID="CB_BillingStatus">
                                    <Items>
                                        <telerik:RadComboBoxItem Text="" Value="0" />
                                        <telerik:RadComboBoxItem value="1" Text="Nessun Saldo" />
                                        <telerik:RadComboBoxItem value="2" Text="Saldato parzialmente" />
                                        <telerik:RadComboBoxItem Value="3" Text="Saldato" />
                                    </Items>
                                </telerik:RadComboBox>
                            </td>
                        </tr>
                        <tr>
                            <td class="CellLabel">Stato restituzione: 
                                <%--<asp:RequiredFieldValidator ValidationGroup="VG0" runat="server" ControlToValidate="CB_Status" ErrorMessage="*" Display="Dynamic"></asp:RequiredFieldValidator>--%>
                            </td>
                            <td class="CellData">
                                <telerik:RadComboBox runat="server" ID="CB_Status">
                                    <Items>
                                        <telerik:RadComboBoxItem Text="" Value="0" />
                                        <telerik:RadComboBoxItem value="1" Text="Consegnato" />
                                        <telerik:RadComboBoxItem value="2" Text="Restituito parzialmente" />
                                        <telerik:RadComboBoxItem Value="3" Text="Restituito" />
                                        <telerik:RadComboBoxItem Value="4" Text="Restituito da riparare" />
                                    </Items>
                                </telerik:RadComboBox>
                            </td>
                        </tr>
                         <tr>
                            <td colspan="2">
                                <telerik:RadSchedulerRecurrenceEditor ID="RecurrenceEditor" runat="server"></telerik:RadSchedulerRecurrenceEditor>
                            </td>
                        </tr>
                        <tr>
                            <td class="CellLabel"></td>
                            <td class="CellData" style="height:60px;vertical-align:bottom">
                            <div style="text-align:right;width:90%">
                                <asp:LinkButton runat="server" ID="LB_Save" CssClass="StyleSave" CommandName="Insert" ValidationGroup="VG0">
                                    <asp:Image runat="server" ImageUrl="~/Resources/Images/ico_check_16.png" ImageAlign="AbsMiddle" />
                                    <span>Salva</span>
                                </asp:LinkButton>
                                  
                                <asp:LinkButton runat="server" ID="LB_Close" CssClass="StyleClose" CommandName="Cancel" ValidationGroup="VG1">
                                    <asp:Image runat="server" ImageUrl="~/Resources/Images/ico_close_16.png" ImageAlign="AbsMiddle" />
                                    <span>Chiudi senza salvare</span>
                                </asp:LinkButton>
                            </div>
                            </td>
                        </tr>
                         
                    </table>
                     
                </div>
             </AdvancedInsertTemplate>
              
             <AdvancedEditTemplate>
                 
                  <telerik:RadToolBar ID="RadToolBar1" runat="server" Width="100%" Height="32px"></telerik:RadToolBar>
                   
                  <div style="border:1px solid #C3C3C3;padding:4px;">
                   
                    <table cellpadding="0" cellspacing="0px" width="100%" border="0" style="margin-top:6px">
                        <tr>
                            <td class="CellLabel">Da: (*) 
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ValidationGroup="VG0" runat="server" ControlToValidate="DTP_DateFrom" ErrorMessage="*" Display="Dynamic"></asp:RequiredFieldValidator>
                            </td>
                            <td class="CellData">
                                <telerik:RadDateTimePicker runat="server" ID="DTP_DateFrom" DateInput-Width="80px" TimeView-Interval="00:15:00" TimeView-Columns="4"></telerik:RadDateTimePicker>
                                  A: (*) 
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator2" ValidationGroup="VG0" runat="server" ControlToValidate="DTP_DateTo" ErrorMessage="*" Display="Dynamic"></asp:RequiredFieldValidator>
                                <telerik:RadDateTimePicker runat="server" ID="DTP_DateTo" DateInput-Width="80px" TimeView-Interval="00:15:00" TimeView-Columns="4"></telerik:RadDateTimePicker>
                            </td>
                        </tr>
                        <tr>
                            <td class="CellLabel">Nolo: (*) 
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator3" ValidationGroup="VG0" runat="server" ControlToValidate="T_Service" ErrorMessage="*" Display="Dynamic"></asp:RequiredFieldValidator>
                            </td>
                            <td class="CellData">
                                
                                <div style="float:left;width:380px">
                                <asp:HiddenField runat="server" ID="HF_IdService" Value="" />
                               <telerik:RadTextBox ReadOnly="true" runat="server" ID="T_Service" Width="350px"></telerik:RadTextBox>
                                <asp:HyperLink runat="server" ID="HL_Service">
                                    <asp:Image ID="Image2" runat="server" ImageUrl="~/Resources/Images/ico_View_16.png" ImageAlign="AbsMiddle" />
                                </asp:HyperLink>
                                </div>
                                <div style="float:left"><asp:Panel runat="server" ID="P_ServiceColor" Width="30px" Height="22px"></asp:Panel></div>
                                <div style="clear:both">
                                 
                                 
                            </td>
                        </tr>
                        <tr>
                            <td class="CellLabel">Assegnatario: (*) 
                                <asp:RequiredFieldValidator ValidationGroup="VG0" runat="server" ControlToValidate="T_Customer" ErrorMessage="*" Display="Dynamic"></asp:RequiredFieldValidator>
                            </td>
                            <td class="CellData">
                                <asp:HiddenField runat="server" ID="HF_IdCustomer" Value="" />
                                <telerik:RadTextBox ReadOnly="true" runat="server" ID="T_Customer" Width="350px"></telerik:RadTextBox>
 
                                <asp:HyperLink runat="server" ID="HL_Customer">
                                    <asp:Image ID="Image3" runat="server" ImageUrl="~/Resources/Images/ico_View_16.png" ImageAlign="AbsMiddle" />
                                </asp:HyperLink>
                            </td>
                        </tr>
                        <tr>
                            <td class="CellLabel">Valore del servizio: </td>
                            <td class="CellData">
                                <telerik:RadNumericTextBox runat="server" ID="T_CostDue" Type="Currency" NumberFormat-DecimalDigits="2" EnabledStyle-HorizontalAlign="Right" Width="80px" MinValue="0"></telerik:RadNumericTextBox>
                            </td>
                        </tr>
                        <tr>
                            <td class="CellLabel">Costo riparazione: </td>
                            <td class="CellData">
                                <telerik:RadNumericTextBox runat="server" ID="T_RepairCost" Type="Currency" NumberFormat-DecimalDigits="2" EnabledStyle-HorizontalAlign="Right" Width="80px"></telerik:RadNumericTextBox>
                            </td>
                        </tr>
                        <tr>
                            <td class="CellLabel">Quota saldata: </td>
                            <td class="CellData">
                                <telerik:RadNumericTextBox ReadOnly="true" runat="server" ID="T_CostPaid" Type="Currency" NumberFormat-DecimalDigits="2" EnabledStyle-HorizontalAlign="Right" Width="80px"></telerik:RadNumericTextBox>
                                <asp:HyperLink runat="server" ID="HL_CostPaid">
                                    <asp:Image runat="server" ImageUrl="~/Resources/Images/ico_View_16.png" ImageAlign="AbsMiddle" />
                                    Gestisci pagamenti
                                </asp:HyperLink>
                            </td>
                        </tr>
                         
                         <tr>
                            <td class="CellLabel">Quota residua: </td>
                            <td class="CellData">
                                <telerik:RadNumericTextBox ReadOnly="true" runat="server" ID="T_CostRemaining" Type="Currency" NumberFormat-DecimalDigits="2" EnabledStyle-HorizontalAlign="Right" Width="80px"></telerik:RadNumericTextBox>
                                
                            </td>
                        </tr>
                        <tr>
                            <td class="CellLabel">Stato contabile: 
                                
                            </td>
                            <td class="CellData">
                                <telerik:RadComboBox runat="server" ID="CB_BillingStatus">
                                    <Items>
                                        <telerik:RadComboBoxItem Text="" Value="0" />
                                        <telerik:RadComboBoxItem value="1" Text="Nessun Saldo" />
                                        <telerik:RadComboBoxItem value="2" Text="Saldato parzialmente" />
                                        <telerik:RadComboBoxItem Value="3" Text="Saldato" />
                                    </Items>
                                </telerik:RadComboBox>
                            </td>
                        </tr>
                        <tr>
                            <td class="CellLabel">Stato restituzione: 
                                
                            </td>
                            <td class="CellData">
                                <telerik:RadComboBox runat="server" ID="CB_Status">
                                    <Items>
                                        <telerik:RadComboBoxItem Text="" Value="0" />
                                        <telerik:RadComboBoxItem value="1" Text="Consegnato" />
                                        <telerik:RadComboBoxItem value="2" Text="Restituito parzialmente" />
                                        <telerik:RadComboBoxItem Value="3" Text="Restituito" />
                                        <telerik:RadComboBoxItem Value="4" Text="Restituito da riparare" />
                                    </Items>
                                </telerik:RadComboBox>
                            </td>
                        </tr>
                        <tr>
                            <td colspan="2">
                                <telerik:RadSchedulerRecurrenceEditor ID="RecurrenceEditor" runat="server"></telerik:RadSchedulerRecurrenceEditor>
                            </td>
                        </tr>
                        <tr>
                            <td class="CellLabel"></td>
                            <td class="CellData" style="height:60px;vertical-align:bottom">
                            <div style="text-align:right;width:500px">
                                <asp:LinkButton runat="server" ID="LB_Save" CssClass="StyleSave" CommandName="Update" ValidationGroup="VG0">
                                    <asp:Image ID="Image4" runat="server" ImageUrl="~/Resources/Images/ico_check_16.png" ImageAlign="AbsMiddle" />
                                    <span>Salva</span>
                                </asp:LinkButton>
                                  
                                <asp:LinkButton runat="server" ID="LB_Close" CssClass="StyleClose" CommandName="Cancel" ValidationGroup="VG1">
                                    <asp:Image ID="Image5" runat="server" ImageUrl="~/Resources/Images/ico_close_16.png" ImageAlign="AbsMiddle" />
                                    <span>Chiudi senza salvare</span>
                                </asp:LinkButton>
                            </div>
                            </td>
                        </tr>
                         
                    </table>
                     
                </div>
             </AdvancedEditTemplate>       
 
            </telerik:RadScheduler>
             
        </div>
        <div id="DIV_Footer">
        <uc:Footer ID="Footer" runat="server" />
        </div>
    </div>
             
        
 
     
    </form>
</body>
</html>

Scheduler.aspx.vb
Imports Telerik.Web.UI
 
Partial Class Admin_Scheduler
    Inherits System.Web.UI.Page
 
    'Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
    '    RadScheduler.Provider = New XmlSchedulerProvider(Server.MapPath("~/App_Data/Appointments.xml"), True)
 
 
    'End Sub
    Private WithEvents Ck_Spazi As CheckBox = Nothing
    Private WithEvents Ck_Mezzi As CheckBox = Nothing
    Private WithEvents Ck_Servizi As CheckBox = Nothing
 
    Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
        Ck_Spazi = CType(RadToolBar_Filter.FindItemByValue("Spazi").FindControl("Ck_Spazi"), CheckBox)
        Ck_Mezzi = CType(RadToolBar_Filter.FindItemByValue("Mezzi").FindControl("Ck_Mezzi"), CheckBox)
        Ck_Servizi = CType(RadToolBar_Filter.FindItemByValue("Servizi").FindControl("Ck_Servizi"), CheckBox)
    End Sub
 
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
 
        If Not IsPostBack Then
            BindScheduler()
        End If
    End Sub
 
    Private Sub BindScheduler()
        Dim oDaObReservation As New Cecchi.Elements.Reservation
 
        RadScheduler.DataSource = oDaObReservation.GetReservationTab(Ck_Spazi.Checked, Ck_Mezzi.Checked, Ck_Servizi.Checked)
        'RadScheduler.DataBind()
    End Sub
 
    Protected Sub RadScheduler_AppointmentCommand(ByVal sender As Object, ByVal e As Telerik.Web.UI.AppointmentCommandEventArgs) Handles RadScheduler.AppointmentCommand
        If e.CommandName = "Insert" Or e.CommandName = "Update" Then
 
            Dim DTP_DateFrom As RadDateTimePicker = DirectCast(e.Container.FindControl("DTP_DateFrom"), RadDateTimePicker)
            Dim DTP_DateTo As RadDateTimePicker = DirectCast(e.Container.FindControl("DTP_DateTo"), RadDateTimePicker)
            Dim HF_IdService As HiddenField = DirectCast(e.Container.FindControl("HF_IdService"), HiddenField)
            Dim T_Service As RadTextBox = DirectCast(e.Container.FindControl("T_Service"), RadTextBox)
            Dim HF_IdCustomer As HiddenField = DirectCast(e.Container.FindControl("HF_IdCustomer"), HiddenField)
            Dim T_CostDue As RadNumericTextBox = DirectCast(e.Container.FindControl("T_CostDue"), RadNumericTextBox)
            Dim T_CostPaid As RadNumericTextBox = DirectCast(e.Container.FindControl("T_CostPaid"), RadNumericTextBox)
            Dim CB_BillingStatus As RadComboBox = DirectCast(e.Container.FindControl("CB_BillingStatus"), RadComboBox)
            Dim CB_Status As RadComboBox = DirectCast(e.Container.FindControl("CB_Status"), RadComboBox)
            Dim T_RepairCost As RadNumericTextBox = DirectCast(e.Container.FindControl("T_RepairCost"), RadNumericTextBox)
            Dim RecurrenceEditor As RadSchedulerRecurrenceEditor = DirectCast(e.Container.FindControl("RecurrenceEditor"), RadSchedulerRecurrenceEditor)
 
            ' Valuto il costo del servizio
            Dim oDaObService As New Cecchi.Elements.DaObService
            oDaObService.PK.Add("IdService", CInt(HF_IdService.Value))
            Dim oService As Data.DataRow = oDaObService.Get
 
            Dim CostDue As Decimal = 0
 
            If oService IsNot Nothing Then
                If oService("RentType") = 0 Then
                    ' Costo orario
                    Dim Durata As TimeSpan = DTP_DateTo.SelectedDate - DTP_DateFrom.SelectedDate
                    'T_CostDue.Value = Durata.TotalHours * CDec(oService("FeePerHour"))
                    CostDue = Durata.TotalHours * CDec(oService("FeePerHour"))
 
                ElseIf oService("RentType") = 1 Then
                    ' Costo forfettario
                    'T_CostDue.Value = CDec(oService("FeeForfait"))
                    CostDue = CDec(oService("FeeForfait"))
                End If
            End If
 
            Select Case e.CommandName
                Case "Update"
 
                    Dim oDaObReservation As New Cecchi.Elements.Reservation
                    Dim oReservation = oDaObReservation.newDaObItem
                    oReservation("IdReservation") = New Guid(e.Container.Appointment.ID.ToString)
                    oReservation("DateFrom") = DTP_DateFrom.DbSelectedDate
                    oReservation("DateTo") = DTP_DateTo.DbSelectedDate
                    oReservation("Subject") = T_Service.Text
 
                    oReservation("IdService") = HF_IdService.Value
                    oReservation("IdCustomer") = HF_IdCustomer.Value
                    oReservation("CostDue") = IIf(T_CostDue.DbValue Is Nothing, 0, T_CostDue.DbValue)
                    oReservation("CostPaid") = IIf(T_CostPaid.DbValue Is Nothing, 0, T_CostPaid.DbValue)
                    oReservation("BillingStatus") = CB_BillingStatus.SelectedValue
                    oReservation("Status") = CB_Status.SelectedValue
                    oReservation("RepairCost") = IIf(T_RepairCost.DbValue Is Nothing, 0, T_RepairCost.DbValue)
 
                    RecurrenceEditor.StartDate = DTP_DateFrom.DbSelectedDate
                    RecurrenceEditor.EndDate = DTP_DateTo.DbSelectedDate
 
                    oReservation("RecurrenceRule") = RecurrenceEditor.RecurrenceRuleText
                    oReservation("RecurrenceParentID") = New Guid(e.Container.Appointment.ID.ToString)
 
                    oDaObReservation.Upd(oReservation)
                    BindScheduler()
 
                Case "Insert"
 
                    Dim oDaObReservation As New Cecchi.Elements.Reservation
                    Dim oReservation = oDaObReservation.newDaObItem
                    oReservation("IdReservation") = Guid.NewGuid
                    oReservation("DateFrom") = DTP_DateFrom.DbSelectedDate
                    oReservation("DateTo") = DTP_DateTo.DbSelectedDate
                    oReservation("Subject") = T_Service.Text
 
                    oReservation("IdService") = HF_IdService.Value
                    oReservation("IdCustomer") = HF_IdCustomer.Value
                    oReservation("CostDue") = CostDue
                    oReservation("CostPaid") = IIf(T_CostPaid.DbValue Is Nothing, 0, T_CostPaid.DbValue)
                    oReservation("BillingStatus") = CB_BillingStatus.SelectedValue
                    oReservation("Status") = CB_Status.SelectedValue
                    oReservation("RepairCost") = IIf(T_RepairCost.DbValue Is Nothing, 0, T_RepairCost.DbValue)
 
                    oDaObReservation.Add(oReservation)
                    BindScheduler()
 
                    Dim Script As String = ""
                    Script += "var Calendar = $find('" & RadScheduler.ClientID & "');"
                    Script += "var Appointments = Calendar.get_appointments();"
                    Script += "var Appointment = Appointments.findByID('" & oReservation("IdReservation").ToString & "');"
                    Script += "Calendar.editAppointment(Appointment);"
 
                    RadAjaxManager.ResponseScripts.Add(Script)
 
            End Select
 
        End If
    End Sub
 
    Protected Sub RadScheduler_AppointmentDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.SchedulerEventArgs) Handles RadScheduler.AppointmentDataBound
 
        e.Appointment.BackColor = System.Drawing.ColorTranslator.FromHtml(e.Appointment.Attributes("Color"))
 
    End Sub
 
    Protected Sub RadScheduler_AppointmentDelete(ByVal sender As Object, ByVal e As Telerik.Web.UI.AppointmentDeleteEventArgs) Handles RadScheduler.AppointmentDelete
        Dim oDaObReservation As New Cecchi.Elements.Reservation
        oDaObReservation.PK.Add("IdReservation", New Guid(e.Appointment.ID.ToString))
 
        oDaObReservation.Del()
        BindScheduler()
    End Sub
 
    Protected Sub RadScheduler_AppointmentUpdate(ByVal sender As Object, ByVal e As Telerik.Web.UI.AppointmentUpdateEventArgs) Handles RadScheduler.AppointmentUpdate
 
    End Sub
 
    'Protected Sub RadScheduler_AppointmentUpdate(ByVal sender As Object, ByVal e As Telerik.Web.UI.AppointmentUpdateEventArgs) Handles RadScheduler.AppointmentUpdate
 
 
    '' Gestisco Resize e Moove degli appuntamenti
    'Dim oDaObReservation As New Cecchi.Elements.Reservation
    'Dim oReservation = oDaObReservation.newDaObItem
    'oReservation("IdReservation") = e.ModifiedAppointment.ID
    'oReservation("DateFrom") = e.ModifiedAppointment.Start
    'oReservation("DateTo") = e.ModifiedAppointment.End
 
    'oDaObReservation.Upd(oReservation)
 
    'BindScheduler()
 
    ' End Sub
 
    Protected Sub RadScheduler_FormCreated(ByVal sender As Object, ByVal e As Telerik.Web.UI.SchedulerFormCreatedEventArgs) Handles RadScheduler.FormCreated
 
        Dim DTP_DateFrom As RadDateTimePicker = DirectCast(e.Container.FindControl("DTP_DateFrom"), RadDateTimePicker)
        Dim DTP_DateTo As RadDateTimePicker = DirectCast(e.Container.FindControl("DTP_DateTo"), RadDateTimePicker)
        Dim HF_IdService As HiddenField = DirectCast(e.Container.FindControl("HF_IdService"), HiddenField)
        Dim T_Service As RadTextBox = DirectCast(e.Container.FindControl("T_Service"), RadTextBox)
        Dim HF_IdCustomer As HiddenField = DirectCast(e.Container.FindControl("HF_IdCustomer"), HiddenField)
        Dim T_Customer As RadTextBox = DirectCast(e.Container.FindControl("T_Customer"), RadTextBox)
        Dim T_CostDue As RadNumericTextBox = DirectCast(e.Container.FindControl("T_CostDue"), RadNumericTextBox)
        Dim T_CostPaid As RadNumericTextBox = DirectCast(e.Container.FindControl("T_CostPaid"), RadNumericTextBox)
        Dim T_CostRemaining As RadNumericTextBox = DirectCast(e.Container.FindControl("T_CostRemaining"), RadNumericTextBox)
        Dim CB_BillingStatus As RadComboBox = DirectCast(e.Container.FindControl("CB_BillingStatus"), RadComboBox)
        Dim CB_Status As RadComboBox = DirectCast(e.Container.FindControl("CB_Status"), RadComboBox)
        Dim T_RepairCost As RadNumericTextBox = DirectCast(e.Container.FindControl("T_RepairCost"), RadNumericTextBox)
        Dim P_ServiceColor As Panel = DirectCast(e.Container.FindControl("P_ServiceColor"), Panel)
 
        Dim RecurrenceEditor As RadSchedulerRecurrenceEditor = DirectCast(e.Container.FindControl("RecurrenceEditor"), RadSchedulerRecurrenceEditor)
 
        Select Case e.Container.Mode
 
            Case SchedulerFormMode.AdvancedEdit
 
                Dim oDaObReservation As New Cecchi.Elements.Reservation
                oDaObReservation.PK.Add("IdReservation", New Guid(e.Appointment.ID.ToString))
                Dim oReservation As Data.DataRow = oDaObReservation.Get()
 
                If oReservation IsNot Nothing Then
                    DTP_DateFrom.DbSelectedDate = oReservation("DateFrom")
                    DTP_DateTo.DbSelectedDate = oReservation("DateTo")
                    T_Service.Text = oReservation("Subject")
 
                    ' Recupero i dati dell'Utente
                    Dim oDaObUser As New Cecchi.Elements.DaObUser
                    Dim oUser As Data.DataRow = oDaObUser.Get(oReservation("IdCustomer"))
                    If oUser IsNot Nothing Then
                        T_Customer.Text = oUser("RagioneSociale").ToString
                    End If
 
                    ' Recupero il colore del Service
                    Dim oDaObService As New Cecchi.Elements.DaObService
                    oDaObService.PK.Add("IdService", oReservation("IdService"))
                    Dim oService As Data.DataRow = oDaObService.Get
 
                    If oService IsNot Nothing Then
                        P_ServiceColor.BackColor = System.Drawing.ColorTranslator.FromHtml(oService("Color"))
                    End If
                    HF_IdService.Value = oReservation("IdService").ToString
                    HF_IdCustomer.Value = oReservation("IdCustomer").ToString
                    T_CostDue.DbValue = oReservation("CostDue")
                    T_RepairCost.DbValue = oReservation("RepairCost")
                    T_CostPaid.DbValue = oReservation("CostPaid")
                    T_CostRemaining.DbValue = oReservation("CostDue") + oReservation("RepairCost") - oReservation("CostPaid")
                    CB_BillingStatus.SelectedValue = oReservation("BillingStatus")
                    CB_Status.SelectedValue = oReservation("Status")
 
 
                    RecurrenceEditor.RecurrenceRuleText = oReservation("RecurrenceRule").ToString
                    RecurrenceEditor.StartDate = oReservation("DateFrom")
                    RecurrenceEditor.EndDate = oReservation("DateTo")
 
 
                    Dim HL_Service As HyperLink = DirectCast(e.Container.FindControl("HL_Service"), HyperLink)
                    HL_Service.NavigateUrl = "javascript:var W=window.open('p_ServiceSearch.aspx','','width=500px,height=500px')"
 
                    Dim HL_Customer As HyperLink = DirectCast(e.Container.FindControl("HL_Customer"), HyperLink)
                    HL_Customer.NavigateUrl = "javascript:var W=window.open('p_CustomerSearch.aspx','','width=500px,height=500px')"
 
                    Dim HL_CostPaid As HyperLink = DirectCast(e.Container.FindControl("HL_CostPaid"), HyperLink)
                    HL_CostPaid.NavigateUrl = "javascript:var W=window.open('p_Sales.aspx?IdReservation=" & e.Appointment.ID.ToString & "','','width=500px,height=500px')"
 
                End If
 
            Case SchedulerFormMode.AdvancedInsert
 
                DTP_DateFrom.SelectedDate = e.Appointment.Start
                DTP_DateTo.SelectedDate = e.Appointment.Start.AddHours(1)
 
                Dim HL_Service As HyperLink = DirectCast(e.Container.FindControl("HL_Service"), HyperLink)
                HL_Service.NavigateUrl = "javascript:var W=window.open('p_ServiceSearch.aspx','','width=500px,height=500px')"
 
                Dim HL_Customer As HyperLink = DirectCast(e.Container.FindControl("HL_Customer"), HyperLink)
                HL_Customer.NavigateUrl = "javascript:var W=window.open('p_CustomerSearch.aspx','','width=500px,height=500px')"
 
 
        End Select
 
    End Sub
 
    Protected Sub RadAjaxManager_AjaxRequest(ByVal sender As Object, ByVal e As Telerik.Web.UI.AjaxRequestEventArgs) Handles RadAjaxManager.AjaxRequest
 
        Select Case e.Argument.Split("|")(0)
            Case "Move"
                Dim oDaObReservation As New Cecchi.Elements.Reservation
                oDaObReservation.PK.Add("IdReservation", New Guid(e.Argument.Split("|")(2)))
 
                Dim oReservation As Data.DataRow = oDaObReservation.Get
                Dim Durata As TimeSpan = CDate(oReservation("DateTo")).Subtract(oReservation("DateFrom"))
 
                oReservation("DateFrom") = CDate(e.Argument.Split("|")(1))
                oReservation("DateTo") = CDate(oReservation("DateFrom")) + Durata
 
                oDaObReservation.Upd(oReservation)
                BindScheduler()
            Case "Resize"
                Dim oDaObReservation As New Cecchi.Elements.Reservation
                oDaObReservation.PK.Add("IdReservation", New Guid(e.Argument.Split("|")(2)))
 
                Dim oReservation As Data.DataRow = oDaObReservation.Get
                Dim Gap As TimeSpan = CDate(e.Argument.Split("|")(1)).Subtract(oReservation("DateTo"))
                Dim Durata As TimeSpan = CDate(e.Argument.Split("|")(1)).Subtract(oReservation("DateFrom"))
 
                oReservation("DateTo") = CDate(oReservation("DateTo")) + Gap
 
                ' Valuto la variazione di costo
                Dim oDaObService As New Cecchi.Elements.DaObService
                oDaObService.PK.Add("IdService", oReservation("IdService"))
                Dim oService As Data.DataRow = oDaObService.Get
 
                If oService IsNot Nothing Then
                    If oService("RentType") = 0 Then
                        ' Costo orario
                        'Dim Durata As TimeSpan = DTP_DateTo.SelectedDate - DTP_DateFrom.SelectedDate
                        oReservation("CostDue") = Durata.TotalHours * CDec(oService("FeePerHour"))
                    End If
                End If
 
 
                oDaObReservation.Upd(oReservation)
                BindScheduler()
 
        End Select
    End Sub
 
    Protected Sub Ck_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Ck_Spazi.CheckedChanged, Ck_Mezzi.CheckedChanged, Ck_Servizi.CheckedChanged
        BindScheduler()
    End Sub
 
End Class

5 Answers, 1 is accepted

Sort by
0
Ivana
Telerik team
answered on 29 Nov 2011, 12:36 PM
Hello Lorenzo,

When modifying a recurrence appointment, the occurrence appointment is saved as an exception in the data base, having its RecurrenceParentID set to the ID of the master appointment, in which the RecurrenceRule is defined. You can read more on about this in the help topic on Working with Recurring Appointments.

In the server-side event OnAppoinmentCommand (in Update mode), you are trying to create an exception of some recurrence,setting the ID of the modifying appointment as a RecurrenceParentID. An exception cannot have its own ID set as RecurrenceParentID.

However, in your scenario you could use the OnRecurrenceExceptionCreated server-side event, where you could easily obtain the RecurrenceParentID of the modified appointment, as the code-block below shows:
protected void RadScheduler1_RecurrenceExceptionCreated(object sender, Telerik.Web.UI.RecurrenceExceptionCreatedEventArgs e)
{
    int recurrenceParentID = (int)e.ExceptionAppointment.RecurrenceParentID;
}

I hope this helps.

Kind regards,
Ivana
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now
0
Lorenzo
Top achievements
Rank 1
answered on 29 Nov 2011, 05:04 PM
Hi,
I feel a bit confused. What I'm trying to do is to modify the entire serie, not the single occurrence. 
I had already read the article you suggested, but did't find how to do what I was trying to.

By the way how do I trigger the RecurrenceExceptionCreated ?

The 
RadSchedulerRecurrenceEditor is inside the AdvancedEditTemplate and I don't understand how could the RadScheduler intercept the event.

Sorry I admit that I don't have a clear picture of the Schduler....

Thanks

Lorenzo




0
Lorenzo
Top achievements
Rank 1
answered on 30 Nov 2011, 06:12 PM
Hello Ivana,
I'm trying to put together a basic sample to explain my problem without all the stuff I had to build around it. I'll get back to you very soon.

Thanks 

Lorenzo
0
Lorenzo
Top achievements
Rank 1
answered on 30 Nov 2011, 06:36 PM
Ok, here we go.

In the first example I have a very basic calenda with no templates and EnableRecurrenceSupprot activated.

test.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="test.aspx.vb" Inherits="Admin_test" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<head runat="server">
    <title></title>
    <style type="text/css">
    HTML,FORM,BODY
    {
    height:100%;
         
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <telerik:RadScriptManager runat="server"></telerik:RadScriptManager>
     
        <div style="height:100%;width:80%;margin:0px auto;">
            <asp:Literal runat="server" ID="Li"></asp:Literal>
            <telerik:RadScheduler runat="server" ID="RadScheduler" EnableRecurrenceSupport="true" SelectedView="MonthView" Height="100%">
                     
            </telerik:RadScheduler>
             
        </div>
 
    </form>
</body>
</html>

test.aspx.vb
Imports Telerik.Web.UI
 
Partial Class Admin_test
    Inherits System.Web.UI.Page
 
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
 
        If Not IsPostBack Then
            Dim oDaObReservation As New Cecchi.Elements.Reservation
 
            RadScheduler.DataKeyField = "IdReservation"
            RadScheduler.DataStartField = "DateFrom"
            RadScheduler.DataEndField = "DateTo"
            RadScheduler.DataSubjectField = "Subject"
            RadScheduler.DataRecurrenceField = "RecurrenceRule"
            RadScheduler.DataRecurrenceParentKeyField = "RecurrenceParentID"
 
            RadScheduler.DataSource = oDaObReservation.GetReservationTab(True, True, True)
        End If
        Li.Text = ""
 
    End Sub
 
    Protected Sub RadScheduler_AppointmentUpdate(ByVal sender As Object, ByVal e As Telerik.Web.UI.AppointmentUpdateEventArgs) Handles RadScheduler.AppointmentUpdate
        Dim Rule As String = ""
        Rule += e.ModifiedAppointment.RecurrenceRule.ToString()
        Li.Text += "AppointmentUpdate - " & Rule
 
    End Sub
 
   
 
    Protected Sub RadScheduler_RecurrenceExceptionCreated(ByVal sender As Object, ByVal e As Telerik.Web.UI.RecurrenceExceptionCreatedEventArgs) Handles RadScheduler.RecurrenceExceptionCreated
        Dim Rule As String = ""
        Rule += e.ExceptionAppointment.RecurrenceRule.ToString
        Li.Text += "RecurrenceExceptionCreated - " & Rule
 
    End Sub
End Class

You will notice I put a simple label above the Scheduler to keep track of the RecurrenceRule generate. Everything here works fine !
If I modify a complete serie of appointment I get the rule for the complete serie, if I add an exception I get the exception rule....everything fine and handled by the AppointmentUpdate Event.

Now...real life !
In my page I have a RadScehduler with AdvancedEditTemplate with RadSchedulerRecurrenceEditor populated on the FormCreated even.
test2.aspx
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="test2.aspx.vb" Inherits="Admin_test2" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<head runat="server">
    <title></title>
    <style type="text/css">
    HTML,FORM,BODY
    {
    height:100%;
         
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <telerik:RadScriptManager runat="server"></telerik:RadScriptManager>
     
        <div style="height:100%;width:80%;margin:0px auto;">
            <asp:Literal runat="server" ID="Li"></asp:Literal>
            <telerik:RadScheduler runat="server" ID="RadScheduler" EnableRecurrenceSupport="true" SelectedView="MonthView" Height="100%">
                    <AdvancedEditTemplate>
                        <telerik:RadSchedulerRecurrenceEditor runat="server" ID="RecurrenceEditor"></telerik:RadSchedulerRecurrenceEditor>
 
                        <div style="text-align:right;width:500px">
                            <asp:LinkButton runat="server" ID="LB_Save" CssClass="StyleSave" CommandName="Update" ValidationGroup="VG0">
                                <asp:Image ID="Image4" runat="server" ImageUrl="~/Resources/Images/ico_check_16.png" ImageAlign="AbsMiddle" />
                                <span>Salva</span>
                            </asp:LinkButton>
                              
                            <asp:LinkButton runat="server" ID="LB_Close" CssClass="StyleClose" CommandName="Cancel" ValidationGroup="VG1">
                                <asp:Image ID="Image5" runat="server" ImageUrl="~/Resources/Images/ico_close_16.png" ImageAlign="AbsMiddle" />
                                <span>Chiudi senza salvare</span>
                            </asp:LinkButton>
                        </div>
 
                    </AdvancedEditTemplate>
            </telerik:RadScheduler>
             
        </div>
 
    </form>
</body>
</html>

test2.aspx.vb
Imports Telerik.Web.UI
 
Partial Class Admin_test2
    Inherits System.Web.UI.Page
 
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
 
        If Not IsPostBack Then
            Dim oDaObReservation As New Cecchi.Elements.Reservation
 
            RadScheduler.DataKeyField = "IdReservation"
            RadScheduler.DataStartField = "DateFrom"
            RadScheduler.DataEndField = "DateTo"
            RadScheduler.DataSubjectField = "Subject"
            RadScheduler.DataRecurrenceField = "RecurrenceRule"
            RadScheduler.DataRecurrenceParentKeyField = "RecurrenceParentID"
 
            RadScheduler.DataSource = oDaObReservation.GetReservationTab(True, True, True)
        End If
        Li.Text = ""
 
 
    End Sub
 
    Protected Sub RadScheduler_AppointmentUpdate(ByVal sender As Object, ByVal e As Telerik.Web.UI.AppointmentUpdateEventArgs) Handles RadScheduler.AppointmentUpdate
        Dim Rule As String = ""
        Rule += e.ModifiedAppointment.RecurrenceRule.ToString()
        Li.Text += "AppointmentUpdate - " & Rule
    End Sub
 
    Protected Sub RadScheduler_FormCreated(ByVal sender As Object, ByVal e As Telerik.Web.UI.SchedulerFormCreatedEventArgs) Handles RadScheduler.FormCreated
 
        If e.Container.Mode = SchedulerFormMode.AdvancedEdit Then
            Dim RecurrenceEditor As RadSchedulerRecurrenceEditor = DirectCast(e.Container.FindControl("RecurrenceEditor"), RadSchedulerRecurrenceEditor)
            Dim IdReservation As Guid = Guid.Empty
 
            If e.Container.Appointment.RecurrenceState = RecurrenceState.NotRecurring OrElse e.Container.Appointment.RecurrenceState = RecurrenceState.Master Then
                IdReservation = New Guid(e.Appointment.ID.ToString)
            ElseIf e.Container.Appointment.RecurrenceState = RecurrenceState.Exception OrElse e.Container.Appointment.RecurrenceState = RecurrenceState.Occurrence Then
                IdReservation = New Guid(e.Appointment.RecurrenceParentID.ToString)
            End If
 
            Dim oDaObReservation As New Cecchi.Elements.Reservation
            oDaObReservation.PK.Add("IdReservation", IdReservation)
            Dim oReservation As Data.DataRow = oDaObReservation.Get()
 
            RecurrenceEditor.RecurrenceRuleText = oReservation("RecurrenceRule").ToString
        End If
 
    End Sub
 
    Protected Sub RadScheduler_RecurrenceExceptionCreated(ByVal sender As Object, ByVal e As Telerik.Web.UI.RecurrenceExceptionCreatedEventArgs) Handles RadScheduler.RecurrenceExceptionCreated
        Dim Rule As String = ""
        Rule += e.ExceptionAppointment.RecurrenceRule.ToString
        Li.Text += "RecurrenceExceptionCreated - " & Rule
    End Sub
End Class

Now here things work strange....
Whatever I do the only Rule that I get is the one that comes from the DataBase. If i change the recurrence interval or whatever else I get that .... if I change make an exception... I still get that one from the DB.

I understand this happens because the FormCreated event is triggered before the Update event, but How can I solve this one !

Thanks

Lorenzo

0
Ivana
Telerik team
answered on 02 Dec 2011, 01:54 PM
Hello Lorenzo,

OnFormCreated event is not really the right moment to alter the Appointment's information. For this scenario you should use the OnAppointmentDataBound server-side event.

Also, you could take a look at the following help article: RadScheduler / Using Advanced Templates, it shows how the Advanced Form of the RadScheduler control could be customized.The code libraries listed at the end of the article, could be of help, too.  They present a running sample projects containing the functionality  explained in the aforementioned help article.

If you are still having troubles, could you please open a support ticket on this matter, where a running sample project could be attached. This way we will be able to troubleshoot the issues you are experiencing, locally.

Best wishes,
Ivana
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now
Tags
Scheduler
Asked by
Lorenzo
Top achievements
Rank 1
Answers by
Ivana
Telerik team
Lorenzo
Top achievements
Rank 1
Share this question
or