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

RadScheduler in Sharepoint 2010 Visual Webpart

1 Answer 87 Views
Sharepoint Integration
This is a migrated thread and some comments may be shown as answers.
Nitinkumar
Top achievements
Rank 1
Nitinkumar asked on 08 May 2013, 04:48 AM

1) I have created Visual Webpart in sharepoint 2010 and parent User control is named "WPScedulerSharepointWebpartUserControl.ascx"

2) Added AdvancedForm.ascx in control template of sharepoint and the same I have register in WPScedulerSharepointWebpartUserControl.ascx

3) I have implemented Radscheduler along with advanceForm.ascx  control . In Visual studio 2010 webpart

My issues are I am not able to get the public properties values from AdvancedForm.ascx to WPScedulerSharepointWebpartUserControl.ascx and Vice Versa.

I am attaching the code for each web part user controls and there code behind below

a) WPScedulerSharepointWebpartUserControl.ascx"

<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls"
    Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Register TagPrefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages"
    Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WPScedulerSharepointWebpartUserControl.ascx.cs"
    Inherits="OnCallSolution.WPScedulerSharepointWebpart.WPScedulerSharepointWebpartUserControl" %>
<%@ Register Assembly="Telerik.Web.UI, Version=2013.1.403.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4"
    Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<%@ Register TagPrefix="scheduler" TagName="AdvancedForm" Src="~/_controltemplates/OnCallSolution/AdvancedForm.ascx" %>

<link rel="Stylesheet" type="text/css" href="/_layouts/OnCallSolution/StyleOnCall.css" />
<script type="text/javascript"> 
  //<![CDATA[

    // Dictionary containing the advanced template client object
    // for a given RadScheduler instance (the control ID is used as key).
    var schedulerTemplates = {};

    function schedulerFormCreated(scheduler, eventArgs) {
       
        // Create a client-side object only for the advanced templates
        var mode = eventArgs.get_mode();
        if (mode == Telerik.Web.UI.SchedulerFormMode.AdvancedInsert ||
     mode == Telerik.Web.UI.SchedulerFormMode.AdvancedEdit) {
            // Initialize the client-side object for the advanced form
            var formElement = eventArgs.get_formElement();
            var templateKey = scheduler.get_id() + "_" + mode;
            var advancedTemplate = schedulerTemplates[templateKey];
            if (!advancedTemplate) {
                // Initialize the template for this RadScheduler instance
                // and cache it in the schedulerTemplates dictionary
                var schedulerElement = scheduler.get_element();
                var isModal = scheduler.get_advancedFormSettings().modal;
                advancedTemplate = new window.SchedulerAdvancedTemplate(schedulerElement, formElement, isModal);
                advancedTemplate.initialize();

                schedulerTemplates[templateKey] = advancedTemplate;

                // Remove the template object from the dictionary on dispose.
                scheduler.add_disposing(function () {
                    schedulerTemplates[templateKey] = null;
                });
            }

            // Are we using Web Service data binding?
            if (!scheduler.get_webServiceSettings().get_isEmpty()) {
                // Populate the form with the appointment data
                var apt = eventArgs.get_appointment();
                var isInsert = mode == Telerik.Web.UI.SchedulerFormMode.AdvancedInsert;
                advancedTemplate.populate(apt, isInsert);
            }
        }
    }
   
  //]]>
</script>
<style type="text/css">
    div.RadScheduler .rsHorizontalHeaderTable, div.RadScheduler .rsContentTable
    {
        width: /*\**/ 100%\9 !important;
    }
    * + html div.RadScheduler .rsHorizontalHeaderTable, * + html div.RadScheduler .rsContentTable
    {
        width: auto !important;
    }
</style>
<script type="text/javascript">
    //    function validationFunctionSubjectContinentsRadComboBox(source, arguments) {
    //        if (arguments.Value.length > 0) {
    //            arguments.IsValid = true;
    //        }
    //        else {
    //            arguments.IsValid = false;
    //        }
    //    }
</script>
<script type="text/javascript">

    Sys.Application.add_init(function () {
        (function () {

            var $,
 $T,
 $DateTime,
 timePerMinute = 60000,
 timePerHour = timePerMinute * 60,
 timePerDay = timePerHour * 24,
 maxInt = 2147483647,
 maxDate = new Date("9000/01/01"),
 toolTipZIndex = 10000,
 resourceControlSuffix = "_ResourceValue";

            window.SchedulerAdvancedTemplate = function (schedulerElement, formElement, isModal) {
                $ = $telerik.$;
                $T = Telerik.Web.UI;
                $DateTime = $T.Scheduler.DateTime;

                this._scheduler = $find(schedulerElement.id);
                this._schedulerElement = schedulerElement;
                this._formElement = formElement;
                this._schedulerElementId = this._schedulerElement.id;
                this._isModal = isModal;
                this._eventNamespace = schedulerElement.id;

                // We need to obtain the ID of the naming container that
                // contains the advanced template. We can find it from
                // the ID of a known element hosted in the form,
                // such as BasicControlsPanel.
                var basicControlsPanel = $("div.rsAdvBasicControls", formElement);
                if (basicControlsPanel.length == 0)
                    return;

                var basicControlsPanelId = basicControlsPanel[0].id;
                this._templateId = basicControlsPanelId.substring(0, basicControlsPanelId.lastIndexOf("_"));
            };

            window.SchedulerAdvancedTemplate._adjustHeight = function (schedulerElement) {
                // Stretches the rsAdvOptions div to the available height.
                var advancedEditDiv = $("div.rsAdvancedEdit:visible", schedulerElement);
                var contentWrapper = $(".rsAdvContentWrapper", advancedEditDiv);
                var excludedBorders = advancedEditDiv.outerHeight() - advancedEditDiv.height();
                excludedBorders += contentWrapper.outerHeight() - contentWrapper.height();

                var titleHeight = $("div.rsAdvTitle:visible", schedulerElement).outerHeight({ margin: true });

                var buttonsDiv = $("div.rsAdvancedSubmitArea", advancedEditDiv);
                var buttonsHeight = buttonsDiv.outerHeight({ margin: true });

                var targetHeight = $(schedulerElement).height() - titleHeight - buttonsHeight - excludedBorders;
                $(".rsAdvOptionsScroll", advancedEditDiv).height(targetHeight + "px");

                // IE fix
                if (buttonsDiv[0])
                    buttonsDiv[0].style.cssText = buttonsDiv[0].style.cssText;
            };

            window.SchedulerAdvancedTemplate.prototype =
{
    initialize: function () {
        var scheduler = this._scheduler;
        scheduler.add_disposing(Function.createDelegate(this, this.dispose));

        // Enable the buttons in the advanced form
        $("div.rsAdvancedSubmitArea a", this._formElement).attr("onclick", "");

        if (scheduler.get_overflowBehavior() == 1 && !this._isModal)
            window.SchedulerAdvancedTemplate._adjustHeight(this._schedulerElement);

        this._initializePickers();
        this._initializeAdvancedFormValidators();
        this._initializeAllDayCheckbox();

        var recurrenceSupport = this._getRecurrenceEditor() != null;
        if (recurrenceSupport) {
            this._initializeResetExceptions();
        }

        if ($telerik.isIE) {
            var textarea = this._getSubjectTextBox().get_element();
            textarea.style.cssText = textarea.style.cssText;
        }

        // Exclude the spin button arrows from the tab order
        $('.riUp, .riDown', this._formElement).attr("tabindex", "-1");
    },

    dispose: function () {
        if (!this._formElement)
            return;

        $("*", this._formElement).unbind();
        $(document).unbind("." + this._eventNamespace);

        this._pickers = null;
        this._scheduler = null;
        this._schedulerElement = null;
        this._formElement = null;
    },

    // The populate function is needed only when using Web Service data binding.
    populate: function (apt, isInsert) {
        if (!this._clientMode)
            this._initializeClientMode();

        this._appointment = apt;
        this._isInsert = isInsert;

        var isAllDay =
            $DateTime.getTimeOfDay(apt.get_start()) == 0 &&
            $DateTime.getTimeOfDay(apt.get_end()) == 0;

        var aptEndDate = $DateTime.getDate(apt.get_end());
        if (isAllDay)
            aptEndDate = $DateTime.add(aptEndDate, -timePerDay);

        this._getSubjectTextBox().set_value(apt.get_subject());

        var descrTextBox = this._getDescriptionTextBox();
        if (descrTextBox)
            descrTextBox.set_value(apt.get_description());

        this._pickers.startDate.set_selectedDate($DateTime.getDate(apt.get_start()));
        this._pickers.startTime.set_selectedDate(apt.get_start());
        this._pickers.endDate.set_selectedDate(aptEndDate);
        this._pickers.endTime.set_selectedDate(apt.get_end());

        this._populateResources();
        this._populateAttributes();

        this._initalizeResetExceptionsClientMode();

        var allDayCheckBox = $("#" + this._templateId + "_AllDayEvent");
        if (isAllDay != allDayCheckBox[0].checked) {
            allDayCheckBox[0].checked = isAllDay;
            this._onAllDayCheckBoxClick(isAllDay, false);
        }

        this._populateRecurrence();
        this._populateReminder();
        this._populateTimeZones();
    },

    _initializeClientMode: function () {
        this._clientMode = true;
        var template = this;

        $("a.rsAdvEditSave", this._formElement)
            .click(function (e) {
                template._saveClicked();
                $telerik.cancelRawEvent(e);
            })
            .attr("href", "#");

        $("a.rsAdvEditCancel, a.rsAdvEditClose", this._formElement)
            .click(function (e) {
                template._cancelClicked();
                $telerik.cancelRawEvent(e);
            })
            .attr("href", "#");
    },

    _initalizeResetExceptionsClientMode: function () {
        var resetExceptions = $("span.rsAdvResetExceptions > a", this._formElement);
        var hasExceptions = this._appointment.get_recurrenceRule().indexOf("EXDATE") != -1;

        resetExceptions.unbind();

        if (hasExceptions) {
            var template = this;
            var localization = this._scheduler.get_localization();
            resetExceptions
                .attr("href", "#")
                .text(localization.AdvancedReset)
                .click(function () {
                    // Display confirmation dialog
                    template._getRemoveExceptionsDialog()
                        .set_onActionConfirm(function () {
                            // The user has confirmed - proceed
                            template._scheduler.removeRecurrenceExceptions(template._appointment);
                            resetExceptions.text(localization.AdvancedDone);
                        })
                        .show();

                    return false;
                });
        }
        else {
            resetExceptions.text("");
        }
    },

    // Click handler for the "Save" button
    _saveClicked: function () {
        if (typeof (Page_ClientValidate) != "undefined") {
            var validationGroup = this._scheduler.get_validationGroup() + (this._isInsert ? "Insert" : "Edit");
            if (!Page_ClientValidate(validationGroup))
                return;
        }

        var apt = this._appointment;
        apt.set_subject(this._getSubjectTextBox().get_value());

        //        //By LTI addeded
        //        var apt = this._getContinentsRadComboBox;
        //        apt.set_subject(this._getContinentsRadComboBox.get_value());

        //        var apt = this._getCountriesRadComboBox;
        //        apt.set_subject(this._getCountriesRadComboBox.get_value());
        //        //end LTI

        var descrTextBox = this._getDescriptionTextBox();
        if (descrTextBox)
            apt.set_description(descrTextBox.get_value());

        var isAllDay = $get(this._templateId + "_AllDayEvent").checked;

        var startDate = this._pickers.startDate.get_selectedDate();
        var startTime = $DateTime.getTimeOfDay(this._pickers.startTime.get_selectedDate());
        apt.set_start($DateTime.add(startDate, isAllDay ? 0 : startTime));

        var endDate = this._pickers.endDate.get_selectedDate();
        var endTime = $DateTime.getTimeOfDay(this._pickers.endTime.get_selectedDate());
        apt.set_end($DateTime.add(endDate, isAllDay ? timePerDay : endTime));

        this._saveResources(apt);
        this._saveAttributes(apt);

        this._saveRecurrenceRule(apt);
        this._saveReminder(apt);
        this._saveTimeZone(apt);

        if (this._isInsert)
            this._scheduler.insertAppointment(apt);
        else
            this._scheduler.updateAppointment(apt);

        this._scheduler.hideAdvancedForm();
    },

    _cancelClicked: function () {
        this._scheduler.hideAdvancedForm();
    },

    _saveResources: function (apt) {
        var template = this;
        var schedulerResources = this._scheduler.get_resources();

        this._scheduler.get_resourceTypes().forEach(function (resourceType) {
            var resourceTypeName = resourceType.get_name();
            var baseName = template._templateId + "_Res" + resourceTypeName + resourceControlSuffix;
            var resourcesOfThisType = schedulerResources.getResourcesByType(resourceTypeName);

            if (resourceType.get_allowMultipleValues()) {
                var checkBoxes = $(String.format("input[id*='{0}']", baseName), this._formElement);

                if (checkBoxes.length > 0)
                    apt.get_resources().removeResourcesByType(resourceTypeName);

                for (var i = 0; i < checkBoxes.length; i++) {
                    if (checkBoxes[i].checked && resourcesOfThisType.get_count() >= i)
                        apt.get_resources().add(resourcesOfThisType.getResource(i));
                };
            }
            else {
                var dropDown = $find(baseName);
                if (!dropDown)
                    return;

                apt.get_resources().removeResourcesByType(resourceTypeName);

                if (dropDown.get_selectedIndex() == 0)
                    return;

                var selectedValue = dropDown.get_selectedItem().get_value();
                var newResource = schedulerResources.findAll(function (res) {
                    return res.get_type() == resourceTypeName &&
                           res._getInternalKey() == selectedValue;
                }).getResource(0) || null;

                if (newResource)
                    apt.get_resources().add(newResource);
            }
        });
    },

    _saveAttributes: function (apt) {
        var template = this;
        var aptAttributes = apt.get_attributes();
        $.each(this._scheduler.get_customAttributeNames(), function () {
            var attrName = this.toString();
            var textBox = $find(template._templateId + "_Attr" + attrName);
            if (!textBox)
                return;

            aptAttributes.removeAttribute(attrName);
            aptAttributes.setAttribute(attrName, textBox.get_value());
        });
    },

    _getResourceIndex: function (res) {
        var resources = this._scheduler.get_resources().getResourcesByType(res.get_type());
        var index, length;

        for (index = 0, length = resources.get_count(); index < length; index++) {
            var filteredRes = resources.getResource(index);
            if (filteredRes.get_type() == res.get_type() && filteredRes.get_key() == res.get_key())
                return index;
        };

        return -1;
    },

    _populateResources: function () {
        var template = this;
        var resourceTypes = this._scheduler.get_resourceTypes();

        resourceTypes.forEach(function (resType) {
            var baseName = template._templateId + "_Res" + resType.get_name() + resourceControlSuffix;

            if (resType.get_allowMultipleValues()) {
                // Clear the resource checkboxes
                $(String.format("input[id*='{0}']", baseName), this._formElement)
                    .each(function () {
                        this.checked = false;
                    });
            }
            else {
                var dropDown = $find(baseName);
                if (dropDown)
                    dropDown.get_items().getItem(0).select();
            }
        });

        this._appointment.get_resources().forEach(function (res) {
            var baseName = template._templateId + "_Res" + res.get_type() + resourceControlSuffix;
            var resType = resourceTypes.getResourceTypeByName(res.get_type());
            if (resType && resType.get_allowMultipleValues()) {
                var resIndex = template._getResourceIndex(res);
                var checkBox = $get(baseName + "_" + resIndex);

                if (checkBox)
                    checkBox.checked = true;
            }
            else {
                var dropDown = $get(baseName);
                if (dropDown)
                    template._selectDropDownValue(dropDown, res._getInternalKey());
            }
        });
    },

    _populateAttributes: function () {
        var template = this;
        this._appointment.get_attributes().forEach(function (attr, attrValue) {
            var textBox = $find(template._templateId + "_Attr" + attr);
            if (!textBox)
                return;

            textBox.set_value(attrValue);
        });
    },

    _saveRecurrenceRule: function (apt) {
        var editor = this._getRecurrenceEditor();
        if (!editor) return;

        editor.set_startDate(this._scheduler.displayToUtc(apt.get_start()));
        editor.set_endDate(this._scheduler.displayToUtc(apt.get_end()));
        editor.set_firstDayOfWeek(this._scheduler.get_firstDayOfWeek());

        var rrule = editor.get_recurrenceRule();
        if (!rrule) {
            apt.set_recurrenceRule("");
            return;
        }

        // Restore the original recurrence exceptions if the
        // appointment was already recurring.
        var originalRRule = $T.RecurrenceRule.parse(apt.get_recurrenceRule());
        if (originalRRule)
            Array.addRange(rrule.get_exceptions(), originalRRule.get_exceptions());

        var range = rrule.get_range();
        if (range.get_recursUntil().getTime() != maxDate.getTime()) {
            var recursUntil = this._scheduler.displayToUtc(range.get_recursUntil());

            if (!this._getElement("AllDayEvent").checked)
                recursUntil = $DateTime.add(recursUntil, timePerDay);

            range.set_recursUntil(recursUntil);
        }

        apt.set_recurrenceRule(rrule.toString());
    },

    _saveTimeZone: function (apt) {
        var timeZonesDropDown = this._getTimeZonesDropDown();
        if (!timeZonesDropDown) return;

        var selectedValue = timeZonesDropDown.get_value();
        if (selectedValue != this._scheduler._timeZoneID)
            apt.set_timeZoneID(selectedValue);

    },

    _saveReminder: function (apt) {
        var reminderDropDown = this._getReminderDropDown();
        if (!reminderDropDown) return;

        var selectedValue = reminderDropDown.get_value();
        var aptReminders = apt.get_reminders();
        if (selectedValue) {
            var reminderMinutes = parseInt(selectedValue, 10);
            if (aptReminders.get_count() > 0) {
                aptReminders.getReminder(0).set_trigger(reminderMinutes);
            }
            else {
                var reminder = new $T.Reminder();
                reminder.set_trigger(reminderMinutes);
                aptReminders.add(reminder);
            }
        }
        else {
            if (aptReminders.get_count() > 0)
                aptReminders.removeAt(0);
        }
    },

    _populateRecurrence: function () {
        var editor = this._getRecurrenceEditor();
        if (!editor) return;

        var rrule = $T.RecurrenceRule.parse(this._appointment.get_recurrenceRule());
        if (rrule) {
            var range = rrule.get_range();
            var recursUntil = range.get_recursUntil().getTime();
            if (recursUntil != maxDate.getTime()) {
                recursUntil = this._scheduler.utcToDisplay(range.get_recursUntil());

                if (!this._getElement("AllDayEvent").checked)
                    recursUntil = $DateTime.add(recursUntil, -timePerDay);

                range.set_recursUntil(recursUntil);
            }
        }
        else {
            editor.set_startDate(this._appointment.get_start());
            editor.set_endDate(this._appointment.get_end());
        }

        editor.set_recurrenceRule(rrule);
    },

    _populateTimeZones: function () {
        var timeZonesDropDown = this._getTimeZonesDropDown();
        if (!timeZonesDropDown) return;

        var timeZone = this._appointment.get_timeZoneID();
        if (!timeZone)
            this._selectDropDownValue(timeZonesDropDown.get_element(), this._scheduler._timeZoneId);
        else
            this._selectDropDownValue(timeZonesDropDown.get_element(), timeZone);
    },

    _populateReminder: function () {
        var reminderDropDown = this._getReminderDropDown();
        if (!reminderDropDown) return;

        var reminder = this._appointment.get_reminders().getReminder(0);
        if (!reminder)
            this._selectDropDownValue(reminderDropDown.get_element(), "");
        else
            this._selectDropDownValue(reminderDropDown.get_element(), reminder.get_trigger());
    },

    _selectDropDownValue: function (dropDown, value) {
        var comboBox = $find(dropDown.id);
        if (comboBox && $T.RadComboBox.isInstanceOfType(comboBox)) {
            comboBox.get_items().forEach(function (item) {
                if (item.get_value() == value)
                    item.select();
            });
        }
        else {
            $.each(dropDown.options, function () {
                if (this.value == value) {
                    this.selected = true;
                    return false;
                }
            });
        }
    },

    _getSubjectTextBox: function () {
        return $find(this._templateId + "_SubjectText");
    },

    //    //By LTI Add

    //    _getContinentsRadComboBox: function () {
    //        return this._getControl("ContinentsRadComboBox")
    //    },

    //    _getCountriesRadComboBox: function () {
    //        return this._getControl("CountriesRadComboBox")
    //    },
    //    //end LTI

    _getDescriptionTextBox: function () {
        return $find(this._templateId + "_DescriptionText");
    },

    _getRecurrenceEditor: function () {
        return $find(this._templateId + "_AppointmentRecurrenceEditor");
    },

    _getReminderDropDown: function () {
        return this._getControl("ReminderDropDown")
    },

    _getTimeZonesDropDown: function () {
        return this._getControl("TimeZonesDropDown")
    },

    _getElement: function (id) {
        return $get(this._templateId + "_" + id);
    },

    _getControl: function (id) {
        return $find(this._templateId + "_" + id);
    },

    _initializePickers: function () {
        // Show picker pop-ups when the inputs are focused

        var showPopupDelegate = Function.createDelegate(this, this._showPopup);

        var templateId = this._templateId;
        this._pickers =
  {
      "startDate": $find(templateId + "_StartDate"),
      "endDate": $find(templateId + "_EndDate"),
      "startTime": $find(templateId + "_StartTime"),
      "endTime": $find(templateId + "_EndTime")
  };

        $.each(
   this._pickers,
   function () {
       if (this && this.get_dateInput)
           this.get_dateInput().add_focus(showPopupDelegate);
   });

        var pickerControls = [
     $get(this._pickers.startDate.get_element().id + "_wrapper"),
     $get(this._pickers.startTime.get_element().id + "_wrapper"),
     $get(this._pickers.startTime.get_element().id + "_timeView_wrapper"),
     $get(this._pickers.endDate.get_element().id + "_wrapper"),
     $get(this._pickers.endTime.get_element().id + "_wrapper"),
     $get(this._pickers.endTime.get_element().id + "_timeView_wrapper"),
     $get(this._templateId + "_SharedCalendar")
    ];

        // Hide the pickers when the focus moves to another element in the template
        var advancedTemplate = this;
        var eventName = "focusin";

        $(this._formElement).bind(eventName,
   function (e) {
       var inPickerControls = false;
       for (var i = 0, len = pickerControls.length; i < len; i++) {
           var control = pickerControls[i];
           if ($telerik.isDescendantOrSelf(control, e.target)) {
               inPickerControls = true;
               break;
           }
       }

       if (!inPickerControls)
           advancedTemplate._hidePickerPopups();
   });

        // Custom jQuery event fired when the pop-up advanced
        // form has been moved.
        $(this._formElement).bind("formMoving", function () {
            advancedTemplate._hidePickerPopups();
        });

        if (this._isModal)
            $(document).bind("scroll." + this._eventNamespace, function () {
                advancedTemplate._hidePickerPopups();
            });
    },

    _initializeAdvancedFormValidators: function () {
        var toolTip = this._createValidatorToolTip();

        if (typeof (Page_Validators) == "undefined")
            return;

        for (var validatorIndex in Page_Validators) {
            var validator = Page_Validators[validatorIndex];
            if (this._validatorIsInTemplate(validator)) {
                var control = $("#" + validator.controltovalidate);
                if (control.length == 0)
                    break;

                if (control.parent().is(".rsAdvDatePicker") ||
     control.parent().is(".rsAdvTimePicker")) {
                    $("#" + validator.controltovalidate + "_dateInput")
      .bind("focus", { "toolTip": toolTip }, this._showToolTip)
      .bind("blur", { "toolTip": toolTip }, this._hideToolTip)
      [0].errorMessage = validator.errormessage;
                }
                else {
                    control.addClass("rsValidatedInput");
                }

                control[0].errorMessage = validator.errormessage;
                this._updateValidator(validator, control);
            }
        }

        var advancedTemplate = this;
        var originalValidatorUpdateDisplay = ValidatorUpdateDisplay;

        ValidatorUpdateDisplay = function (validator) {
            if (advancedTemplate._validatorIsInTemplate(validator) && validator.controltovalidate) {
                advancedTemplate._updateValidator(validator);
            }
            else {
                originalValidatorUpdateDisplay(validator);
            }
        };

        $(".rsValidatedInput", this._formElement)
   .bind("focus", { "toolTip": toolTip }, this._showToolTip)
   .bind("blur", { "toolTip": toolTip }, this._hideToolTip);
    },

    _initializeAllDayCheckbox: function () {
        var allDayCheckbox = $("#" + this._templateId + "_AllDayEvent");
        var controlList = $(allDayCheckbox[0].parentNode.parentNode.parentNode);
        var timePickers = controlList.find('.rsAdvTimePicker');

        // RadDateTimePicker-display-hackedy-hack
        if ($telerik.isIE6 || $telerik.isIE7) {
            $('.rsAdvTimePicker, .rsAdvDatePicker', this._formElement).css(
   {
       display: "inline",
       zoom: 1,
       width: ""
   });
        }
        else {
            $('.rsAdvTimePicker, .rsAdvDatePicker', this._formElement).css(
   {
       display: "inline-block",
       width: ""
   });
        }

        var timePickersWidth = $("#" + this._templateId + "_StartTime_dateInput").outerWidth();

        timePickers.width(timePickersWidth);

        var initialPickersWidth = $(".rsTimePick", this._formElement).eq(0).outerWidth();
        var allDayPickersWidth = initialPickersWidth - timePickersWidth;

        var startTimeValidator = $get(this._templateId + "_StartTimeValidator");
        var endTimeValidator = $get(this._templateId + "_StartTimeValidator");

        var advancedTemplate = this;

        // IE fix - the hidden input pushes down the other TimePicker elements during animation
        controlList.find('.rsAdvTimePicker > input').css("display", "none");

        var clickHandler = function (allDay, animate) {
            var showTimePickers = function () {
                if ($telerik.isSafari || $telerik.isOpera)
                    timePickers.css("display", "inline-block");
                else
                    timePickers.show();
            };

            if (!allDay)
                showTimePickers();

            controlList.find('.rsTimePick').each(function () {
                if (animate) {
                    $(this).stop();

                    if (allDay)
                        $(this).animate({ width: allDayPickersWidth }, "fast",
       "linear", function () { timePickers.hide(); });
                    else
                        $(this).animate({ width: initialPickersWidth }, "fast");
                }
                else {
                    if (allDay) {
                        timePickers.hide();
                        $(this).width(allDayPickersWidth);
                    }
                    else {
                        $(this).width(initialPickersWidth);
                    }
                }
            });

            if (typeof (ValidatorEnable) != "undefined") {
                ValidatorEnable(startTimeValidator, !allDay);
                ValidatorEnable(endTimeValidator, !allDay);
            }

            var startTimePicker = advancedTemplate._pickers.startTime;
            startTimePicker.set_enabled(!allDay);

            var endTimePicker = advancedTemplate._pickers.endTime;
            endTimePicker.set_enabled(!allDay);
        };

        this._onAllDayCheckBoxClick = clickHandler;

        clickHandler(allDayCheckbox[0].checked, false);
        allDayCheckbox.click(function () { clickHandler(this.checked, true); });
    },

    _initializeResetExceptions: function () {
        var resetExceptions = $("#" + this._templateId + "_ResetExceptions");
        if (resetExceptions.length == 0)
            return;

        var scheduler = this._scheduler;
        var template = this;
        var localization = scheduler.get_localization();
        var doneMessage = localization.AdvancedDone;
        if (resetExceptions[0].innerHTML.indexOf(doneMessage) > -1) {
            // Hide "Done" after 2 seconds
            resetExceptions.click(function () { return false; });
            window.setTimeout(function () { resetExceptions.fadeOut("slow"); }, 2000);
        }
        else {
            resetExceptions.click(
                function () {
                    // Display confirmation dialog
                    var dialog = template._getRemoveExceptionsDialog();
                    dialog.set_onActionConfirm(function () {
                        // The user has confirmed - proceed with postback
                        resetExceptions[0].innerHTML = localization.AdvancedWorking;
                        window.location.href = resetExceptions[0].href;

                        dialog.dispose();
                    })
                        .show();

                    return false;
                });
        }
    },

    _getRemoveExceptionsDialog: function () {
        var localization = this._scheduler.get_localization();
        return $telerik.$.modal(this._formElement)
            .initialize()
            .set_content({
                title: localization.ConfirmResetExceptionsTitle,
                content: localization.ConfirmResetExceptionsText,
                ok: localization.ConfirmOK,
                cancel: localization.ConfirmCancel
            });
    },

    _updateValidator: function (validator) {
        var control = $("#" + validator.controltovalidate);

        if (control.is(".rsValidatedInput"))
            control = control.parent();

        if (!validator.isvalid)
            control.addClass("rsInvalid");
        else
            control.removeClass("rsInvalid");
    },

    _validatorIsInTemplate: function (validator) {
        return $(validator).parents().is("#" + this._schedulerElementId);
    },

    _createValidatorToolTip: function () {
        return $('<div></div>').hide().appendTo($('.rsAdvancedEdit:visible', $get(this._schedulerElementId)));
    },

    _showToolTip: function (e) {
        var toolTip = e.data.toolTip;
        var _control = $(this);
        var isTextArea = false;
        var controlParent = _control.parent();

        if (_control.is("textarea")) {
            isTextArea = true;
            _control = controlParent;
        }

        var isInvalid = _control.is(".rsInvalid");
        // Date and time pickers are validated against a hidden input located one level up in the DOM
        isInvalid = isInvalid || controlParent.parent().children().is(".rsInvalid");

        if (isInvalid) {
            toolTip
    .css("visibility", "hidden")
    .text(this.errorMessage)
    .addClass("rsValidatorTooltip");

            var positionOrigin = _control;
            if (controlParent.is(".riCell"))
                positionOrigin = controlParent;

            var pos = positionOrigin.position();
            var toolTipLeft = pos.left + "px";

            if (isTextArea) {
                toolTipLeft = (pos.left + positionOrigin.outerWidth() - toolTip.outerWidth()) + "px";
            }

            var toolTipTop = (pos.top - toolTip.outerHeight()) + "px";
            toolTip
    .css({
        top: toolTipTop,
        left: toolTipLeft,
        zIndex: toolTipZIndex,
        visibility: "visible"
    })
    .fadeIn("fast");
        }
    },

    _hideToolTip: function (e) {
        var toolTip = e.data.toolTip;
        toolTip.hide();
    },

    _hidePickerPopups: function () {
        if (!this._pickers)
            return;

        for (var pickerId in this._pickers) {
            var picker = this._pickers[pickerId];

            if (!picker)
                continue;

            if (picker.hideTimePopup)
                picker.hideTimePopup();
            else
                picker.hidePopup();
        }
    },

    _showPopup: function (sender) {
        this._hidePickerPopups();

        if (sender.Owner.showTimePopup)
            sender.Owner.showTimePopup();
        else
            sender.Owner.showPopup();
    }
};
        })();
    });

    var countriesCombo = null;
    function CountriesComboClientLoad(sender) {
        countriesCombo = sender;
    }
    function CountriesLoaded(combo, eventArqs) {
        if (combo.get_items().get_count() > 0) {
            // Pre-select the first country  
            combo.set_text(combo.get_items().getItem(0).get_text());
            combo.get_items().getItem(0).highlight();
        }
        combo.showDropDown();
    }

    function LoadCountries(combo, eventArqs) {
        var item = eventArqs.get_item();

        countriesCombo.set_text("Loading...");

        // Is continent selected?  
        if (item.get_index() > 0) {
            // Request items through the ItemsRequested event of the   
            // countries RadComboBox passing the continentID as a parameter   
            countriesCombo.requestItems(item.get_value(), false);

        }
        else {
            // The "-Select a continent-" item was chosen  
            countriesCombo.set_text(" ");
            countriesCombo.clearItems();
        }
    }

  

</script>
<%--<script type="text/javascript">   
//<![CDATA[

    function schedulerFormCreated(scheduler, eventArgs) {
        var $ = $telerik.$;
        var schedulerElement = scheduler.get_element();
        var formElement = $("div.rsAdvancedEdit", schedulerElement);

        if (formElement.length == 1) {
            // Initialize the client-side object for the advanced form  
            var advancedTemplate = new window.SchedulerAdvancedTemplate(schedulerElement, formElement);
            advancedTemplate.initialize();
        }
    }  
 
//]]>   
</script> --%>

     <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
          <AjaxSettings>
               <telerik:AjaxSetting AjaxControlID="RadScheduler1">
                    <UpdatedControls>
                         <telerik:AjaxUpdatedControl ControlID="RadScheduler1" LoadingPanelID="RadAjaxLoadingPanel1" />
                    </UpdatedControls>
               </telerik:AjaxSetting>
          </AjaxSettings>
     </telerik:RadAjaxManager>
     <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" />

    <table style="width: 100%" cellpadding="3" cellspacing="5" align="center">
        <tr>
            <td align="left" class="wepartFont">
                <telerik:RadScheduler runat="server" ID="RadScheduler1" OverflowBehavior="Expand"
                    Skin="Windows7" OnAppointmentDelete="RadScheduler1_AppointmentDelete" OnAppointmentUpdate="RadScheduler1_AppointmentUpdate"
                    OnAppointmentInsert="RadScheduler1_AppointmentInsert" SelectedView="MonthView"
                    OnFormCreated="RadScheduler1_FormCreated" DataStartField="Start" DataEndField="End"
                    AdvancedForm-Enabled="true" Localization-AdvancedNewAppointment="New Schedule"
                    StartInsertingInAdvancedForm="True" OnAppointmentCreated="RadScheduler1_AppointmentCreated"
                    OnFormCreating="RadScheduler1_FormCreating" OnAppointmentDataBound="RadScheduler1_AppointmentDataBound"
                    StartEditingInAdvancedForm="true" OnClientFormCreated="schedulerFormCreated"
                    EnableCustomAttributeEditing="true"
                    CustomAttributeNames="Asset_Contact_Tag_ID,Shift_ID,Contact_ID"
                    >
                    <Localization AdvancedNewAppointment="New Schedule" AdvancedEditAppointment="Edit Schedule"
                        AdvancedSubjectRequired="Please provide schedule subject" ConfirmDeleteText="Are you sure you want to delete this schedule?"
                        ConfirmRecurrenceDeleteTitle="Deleting a recurring schedule" ConfirmRecurrenceEditTitle="Editing a recurring schedule"
                        ConfirmRecurrenceMoveTitle="Moving a recurring schedule" ConfirmRecurrenceResizeTitle="Resizing a recurring schedule"
                        ContextMenuAddAppointment="New Schedule" ContextMenuAddRecurringAppointment="New Recurring Schedule">
                    </Localization>
                    <AppointmentContextMenuSettings EnableDefault="true" />
                    <TimeSlotContextMenuSettings EnableDefault="true" />
                    <ExportSettings OpenInNewWindow="True">
                    </ExportSettings>
                    <AdvancedForm Modal="true" EnableTimeZonesEditing="true" />
                    <Reminders Enabled="true" />
                    <AdvancedEditTemplate>
                        <scheduler:AdvancedForm runat="server" ID="AdvancedEditForm1" Mode="Edit" Subject='<%# Bind("Subject") %>'
                            Description='<%# Bind("Description") %>' Start='<%# Bind("Start") %>' End='<%# Bind("End") %>'
                            RecurrenceRuleText='<%# Bind("RecurrenceRule") %>' Reminder='<%# Bind("Reminder") %>'
                            TimeZoneID='<%# Bind("TimeZoneID") %>'  />
                        />
                    </AdvancedEditTemplate>
                    <AdvancedInsertTemplate>
                        <scheduler:AdvancedForm runat="server" ID="AdvancedInsertForm1" Mode="Insert" Subject='<%# Bind("Subject") %>'
                            Start='<%# Bind("Start") %>' End='<%# Bind("End") %>' Description='<%# Bind("Description") %>'
                            RecurrenceRuleText='<%# Bind("RecurrenceRule") %>' Reminder='<%# Bind("Reminder") %>'
                            TimeZoneID='<%# Bind("TimeZoneID") %>'  />
                        />
                    </AdvancedInsertTemplate>
                </telerik:RadScheduler>
            </td>
        </tr>
    </table>

 

 

b) WPScedulerSharepointWebpartUserControl.ascx.cs

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Telerik.Web.UI;
using System.Data;
using System.Collections.Generic;
using OnCallSolution.ControlTemplates.OnCallSolution;
using System.ComponentModel;
using Microsoft.SharePoint.WebPartPages;
using System.Xml.Serialization;//for accessing the public properties from the advanced form

namespace OnCallSolution.WPScedulerSharepointWebpart
{
    [ToolboxItemAttribute(false)]
    [XmlRoot(Namespace = "OnCallSolution.WPScedulerSharepointWebpart")]
    public partial class WPScedulerSharepointWebpartUserControl : UserControl
    {
        // Fields
        protected RadScheduler RadScheduler1;
        public DataTable dtResult;
        UserInfoManupulator ui = new UserInfoManupulator();
              

        public virtual Object RecurrenceParentID
        {
            get;
            set;
        }

        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            RadScheduler1.Localization.AdvancedNewAppointment = "New Schedule";
            RadScheduler1.AdvancedForm.Enabled = true;
            RadScheduler1.SelectedDate = System.DateTime.UtcNow.ToLocalTime(); //this date is called as per UTC time line
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.Page.IsPostBack)
            {
                this.LoadSchedulerData();
                //// this.LoadContactPerson();

                //// Session.Remove(AppointmentsKey);
                //RadScheduler1.DataKeyField = "ID";
                //RadScheduler1.DataStartField = "Start";
                //RadScheduler1.DataEndField = "End";
                //RadScheduler1.DataSubjectField = "Subject";
                //RadScheduler1.DataRecurrenceField = "RecurrenceRule";
                //RadScheduler1.DataRecurrenceParentKeyField = "RecurrenceParentID";
            }

            RadScheduler1.DataSource = Appointments;

        }
        // Methods
        private void LoadSchedulerData()
        {
            try
            {
                OC_Scheduler_Appointment sc = new OC_Scheduler_Appointment();
                DataTable dt = new DataTable();
                dt = null;
                dt = sc.getData();

                RadScheduler1.DataSource = dt;
                RadScheduler1.DataSubjectField = "Subject";
                RadScheduler1.DataStartField = "Start";
                RadScheduler1.DataEndField = "End";
                RadScheduler1.DataKeyField = "ID";
                RadScheduler1.DataRecurrenceField = "RecurrenceRule";
                RadScheduler1.DataRecurrenceParentKeyField = "RecurrenceParentID";
                RadScheduler1.DataBind();

            }
            catch (Exception ex)
            {
            }
        }

        private void LoadContactPerson()
        {
            try
            {

                OC_Scheduler_Appointment app = new OC_Scheduler_Appointment();
                dtResult = app.getContactforCalendar();
                if (dtResult != null)
                {
                    ResourceType rt = new ResourceType("Contact");
                    rt.ForeignKeyField = "Contact_ID";
                    rt.KeyField = "Contact_ID";
                    rt.TextField = "Name";
                    rt.DataSource = dtResult;

                    for (int i = 0; i < dtResult.Rows.Count; i++)
                    {
                        RadScheduler1.Resources.Add(new Resource("Contact", dtResult.Rows[i]["Contact_ID"].ToString(), dtResult.Rows[i]["Name"].ToString()));
                    }
                    RadScheduler1.ResourceTypes.Add(rt);
                }
            }
            catch (Exception ex)
            {
            }
        }

        private void LoadAssociatedTag()
        {
            // throw new NotImplementedException();
        }

        protected void RadScheduler1_AppointmentDelete(object sender, SchedulerCancelEventArgs e)
        {
            OC_Scheduler_Appointment appointmentDelete = new OC_Scheduler_Appointment();

            try
            {
                appointmentDelete.deleteAppointmentByID((int)e.Appointment.ID);
                LoadSchedulerData();
            }
            catch (Exception ex)
            {
            }
            LoadSchedulerData();
        }

        protected void RadScheduler1_AppointmentInsert(object sender, SchedulerCancelEventArgs e)
        {
            #region CommentedCode

            //OC_Scheduler_Appointment appointmentAdd = new OC_Scheduler_Appointment();
            //AdvancedForm o = new AdvancedForm();//for accesing the public proerties from the advanced from

            //try
            //{

           
            //    appointmentAdd.Subject = e.Appointment.Subject.ToString();
            //    appointmentAdd.Start = e.Appointment.Start;
            //    appointmentAdd.End = e.Appointment.End;
            //    appointmentAdd.Description = e.Appointment.Description;// e.Appointment.Description;
            //    appointmentAdd.RecurrenceRule = e.Appointment.RecurrenceRule;// e.Appointment.RecurrenceRule.ToString();
            //    appointmentAdd.TimeZone = o.TimeZoneID;// e.Appointment.TimeZoneID;// .Appointment.TimeZoneID;
            //    appointmentAdd.Asset_Contact_Tag_ID = o.Asset_Contact_Tag_ID;// Asset_Contact_Tag_ID;// ContactID;// o._ContactIDofPerson;
            //    appointmentAdd.Shift_ID = 1;//temporary hard coaded values here 1 or 2
            //    appointmentAdd.Reminder = e.Appointment.Reminders.ToString();// e.Appointment.Reminders.ToString();
            //    appointmentAdd.Annotations = "";
            //    appointmentAdd.Updated_By = ui.GetCurrentUserLoginName();
            //    appointmentAdd.Update_Time = System.DateTime.UtcNow;

            //    DataTable dt = null;
            //    dt = appointmentAdd.getAsset_Contact_Tag_ID(o._Asset_Contact_Tag_ID, o._ContactID);

            //    if (dt != null)
            //    {
            //        appointmentAdd.Asset_Contact_Tag_ID = Convert.ToInt32(dt.Rows[0]["Asset_Contact_Tag_ID"]);
            //    }

            //    dt = null;

            //    dt = appointmentAdd.get_Shift_ID(appointmentAdd.Shift_ID);

            //    if (dt != null)
            //    {
            //        appointmentAdd.Shift_ID = Convert.ToInt32(dt.Rows[0]["Shift_ID"]);
            //    }

            //    //if Recurrent not done then RecurrenceParentID is 0 so send  value null to the database
            //    if (appointmentAdd.RecurrenceParentID == 0)
            //    {
            //        //Insert all values along with the recurentceParentID NULL if not recurrence done
            //        //int? tempRPID = sys.null;
            //        //appointmentAdd.RecurrenceParentID = tempRPID;
            //        int saveOrNot = appointmentAdd.saveApointmentDataWithRecureenceParentIDNull(appointmentAdd);
            //    }
            //    else
            //    {

            //        //Insert all values along with the recurentceParentID
            //        // appointmentAdd.RecurrenceParentID = (int?)RecurrenceParentID;
            //        int saveOrNot = appointmentAdd.saveApointmentData(appointmentAdd);

            //    }

 

            //}
            //catch (Exception ex)
            //{
            //}

            #endregion
            RadScheduler1.Rebind();
            // LoadSchedulerData();
            string wer = e.Appointment.Attributes["Continent"];

                      
        }
       
        protected void RadScheduler1_AppointmentUpdate(object sender, AppointmentUpdateEventArgs e)
        {
           
            //OC_Scheduler_Appointment appointmentUpdate = new OC_Scheduler_Appointment();

            //try
            //{
            //    RecurrenceRule rrule;
            //    if (RecurrenceRule.TryParse(e.ModifiedAppointment.RecurrenceRule, out rrule))
            //    {
            //        rrule.Range.Start = e.ModifiedAppointment.Start;
            //        rrule.Range.EventDuration = e.ModifiedAppointment.End - e.ModifiedAppointment.Start;
            //        TimeSpan startTimeChange = e.ModifiedAppointment.Start - e.Appointment.Start;
            //        for (int i = 0; i < rrule.Exceptions.Count; i++)
            //        {
            //            rrule.Exceptions[i] = rrule.Exceptions[i].Add(startTimeChange);
            //        }

            //        e.ModifiedAppointment.RecurrenceRule = rrule.ToString();
            //    }

            //    appointmentUpdate.Subject = e.ModifiedAppointment.Subject.ToString();
            //    appointmentUpdate.Start = e.ModifiedAppointment.Start;
            //    appointmentUpdate.End = e.ModifiedAppointment.End;
            //    appointmentUpdate.Description =  e.ModifiedAppointment.Description;
            //   // appointmentUpdate.RecurrenceRule = e.ModifiedAppointment.RecurrenceRule;// RecurrenceRuleText;// e.Appointment.RecurrenceRule.ToString();
            //    appointmentUpdate.TimeZone = e.ModifiedAppointment.TimeZoneID; // .Appointment.TimeZoneID;
            //    //appointmentUpdate.Asset_Contact_Tag_ID = Asset_Contact_Tag_ID;// ContactID;// o._ContactIDofPerson;
            //    //appointmentUpdate.Shift_ID = 1;//temporary hard coaded values here 1 or 2
            //    //appointmentUpdate.Reminder = Reminder;// e.Appointment.Reminders.ToString();
            //    //appointmentUpdate.Annotations = "";
            //    //appointmentUpdate.Updated_By = ui.GetCurrentUserLoginName();
            //    //appointmentUpdate.Update_Time = System.DateTime.UtcNow;

            //    //DataTable dt = null;
            //    //dt = appointmentUpdate.getAsset_Contact_Tag_ID(Asset_Contact_Tag_ID, ContactID);

            //    //if (dt != null)
            //    //{
            //    //    appointmentUpdate.Asset_Contact_Tag_ID = Convert.ToInt32(dt.Rows[0]["Asset_Contact_Tag_ID"]);
            //    //}

            //    //dt = null;

            //    //dt = appointmentUpdate.get_Shift_ID(appointmentAdd.Shift_ID);

            //    //if (dt != null)
            //    //{
            //    //    appointmentUpdate.Shift_ID = Convert.ToInt32(dt.Rows[0]["Shift_ID"]);
            //    //}

            //    ////if Recurrent not done then RecurrenceParentID is 0 so send  value null to the database
            //    //if (appointmentUpdate.RecurrenceParentID == 0)
            //    //{
            //    //    //Insert all values along with the recurentceParentID NULL if not recurrence done
            //    //    //int? tempRPID = sys.null;
            //    //    //appointmentAdd.RecurrenceParentID = tempRPID;
            //    //    int saveOrNot = appointmentUpdate.saveApointmentDataWithRecureenceParentIDNull(appointmentAdd);
            //    //}
            //    //else
            //    //{

            //    //    //Insert all values along with the recurentceParentID
            //    //    // appointmentAdd.RecurrenceParentID = (int?)RecurrenceParentID;
            //    //    int saveOrNot = appointmentUpdate.saveApointmentData(appointmentAdd);

            //    //    //get latest insterted record
            //    //    //SELECT ID FROM Appointments WHERE id=(SELECT max(id) FROM Appointments)

 

            //    //}

 

            //}
            //catch (Exception ex)
            //{
            //}

 

 

            //RecurrenceRule rrule;
            //if (RecurrenceRule.TryParse(e.ModifiedAppointment.RecurrenceRule, out rrule))
            //{
            //    rrule.Range.Start = e.ModifiedAppointment.Start;
            //    rrule.Range.EventDuration = e.ModifiedAppointment.End - e.ModifiedAppointment.Start;
            //    TimeSpan startTimeChange = e.ModifiedAppointment.Start - e.Appointment.Start;
            //    for (int i = 0; i < rrule.Exceptions.Count; i++)
            //    {
            //        rrule.Exceptions[i] = rrule.Exceptions[i].Add(startTimeChange);
            //    }

            //    e.ModifiedAppointment.RecurrenceRule = rrule.ToString();
            //    e.ModifiedAppointment.Subject=

            //}

            LoadSchedulerData();
        }

        protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)
        {
            if ((e.Container.Mode == SchedulerFormMode.AdvancedEdit) || (e.Container.Mode == SchedulerFormMode.AdvancedInsert))
            {
               
                if (e.Appointment.ID != null)//if this numm then new appoinement inserting and if its has value then Edit Appoitment will work aarangement done here
                {

                    ////Start this part will store the appointment ID in hiddent text fields which I will required to update the data from Advanced form
                    //RadTextBox txtGetAppHiddentID = (RadTextBox)e.Container.Controls[1].Controls[1].FindControl("RadTextHiddenAppID");
                    //txtGetAppHiddentID.Text = e.Appointment.ID.ToString();
                    //_AppID = Convert.ToInt32(e.Appointment.ID);
                    ////end

                    //get Asset_Contact_Tag_ID by Appoitment ment ID from the Edit appointment
                    // getAsset_Contact_Tag_IDByAppointmentID (Method)

                    OC_Scheduler_Appointment getAsset_Contact_Tag = new OC_Scheduler_Appointment();
                    dtResult = getAsset_Contact_Tag.getAsset_Contact_Tag_IDByAppointmentID((int)e.Appointment.ID);

                    int assetID = Convert.ToInt32(dtResult.Rows[0]["Asset_Contact_Tag_ID"]);

                    //Select person and tag on Edit the existing appointment
                    //get people
                    //Select distinct Contact_ID, Name from OC_Contact where Contact_ID=(Select Contact_ID from OC_Asset_Contact_Tag where Asset_Contact_Tag_ID=151)

                    OC_Scheduler_Appointment getPersonAndContactID = new OC_Scheduler_Appointment();

                    RadComboBox rcb_PersonName = (RadComboBox)e.Container.Controls[1].Controls[1].FindControl("ContinentsRadComboBox");

                    dtResult = getPersonAndContactID.getPersonNameForFirstComboBoxInEditAppointment();
                    //rcb_PersonName.ClearSelection();
                    //rcb_PersonName.DataSource = dtResult;
                    //rcb_PersonName.DataTextField = "Name";
                    //rcb_PersonName.DataValueField = "Contact_ID";
                    //rcb_PersonName.DataBind();

                    dtResult = getPersonAndContactID.getPersonAndContactIDOnEditAppointmentByAsset_Contact_Tag_ID(assetID);
                    int contactid = Convert.ToInt32(dtResult.Rows[0]["Contact_ID"]);

                    rcb_PersonName.SelectedItem.Text = dtResult.Rows[0]["Name"].ToString();
                    string compare = dtResult.Rows[0]["Name"].ToString();

                    //for Selected the person name whille in Edit appointment mode
                    if (compare == dtResult.Rows[0]["Name"].ToString())
                    {
                        rcb_PersonName.SelectedItem.Text = dtResult.Rows[0]["Name"].ToString();
                    }

                    dtResult = getPersonAndContactID.getTagNameByPersonNameOnEditAppointment(rcb_PersonName.SelectedItem.Text);
                    RadComboBox rcb_Tag = (RadComboBox)e.Container.Controls[1].Controls[1].FindControl("CountriesRadComboBox");
                    rcb_Tag.DataSource = dtResult;
                    rcb_Tag.DataTextField = "Tag_Name";
                    rcb_Tag.DataValueField = "Asset_Tags_Master_ID";
                    rcb_Tag.DataBind();
                    rcb_Tag.SelectedItem.Text = dtResult.Rows[0]["Tag_Name"].ToString();

 

                    // Select distinct T.Asset_Tags_Master_ID,t.Tag_Name  from OC_Asset_Contact_Tag CT inner join  OC_Asset_Tag_Master T  on t.Asset_Tags_Master_ID=ct.Asset_Tags_Master_ID inner join OC_Contact C on c.Contact_ID=  ct.Contact_ID where C.Name='Penkar, Shafaque' and ct.Status=1

 

                    // int currentValueOfPersonAfterRuntimeSelectedPersonName = Convert.ToInt32(rcb_PersonName.SelectedValue);

                    //create run time selected index before filling data of tags name as its should be populated before personame dropdown . So runtime we are selecting index of first dropdown and then willselect text from the below methods
                    // rcb_PersonName.SelectedItem.Text = Convert.ToInt32(dtResult.Rows[0]["Contact_ID"]);

                    //get Tag
                    //select Asset_Tags_Master_ID,Tag_Name from  OC_Asset_Tag_Master where Asset_Tags_Master_ID =(select Asset_Tags_Master_ID from OC_Asset_Contact_Tag where Contact_ID=13 and Asset_Contact_Tag_ID=138) 

 

 

                    ////select TagName on edit of existing appointment and get id's from above function
                    //OC_Scheduler_Appointment getTagNameAndTagID = new OC_Scheduler_Appointment();
                    //dtResult = getTagNameAndTagID.getTagNameAndAsset_Contact_Tag_IDOnEditAppointmentByContactIDAndAppointmentID(contactid, assetID);
                    //RadComboBox rcb_Tag = (RadComboBox)e.Container.Controls[1].Controls[1].FindControl("CountriesRadComboBox");
                    ////rcb_Tag.SelectedIndex = Convert.ToInt32(dtResult.Rows[0]["Asset_Tags_Master_ID"]);
                    //rcb_Tag.SelectedItem.Text = dtResult.Rows[0]["Tag_Name"].ToString();

 

                }
                else
                {
                    //for validation of person and Tag name combobox
                    //RadComboBox rcb_PersonName = (RadComboBox)e.Container.Controls[1].Controls[1].FindControl("ContinentsRadComboBox");
                    //RequiredFieldValidator rfv= new RequiredFieldValidator();
                    //rfv.ID="rcb_PersonName";
                    //rfv.ControlToValidate="";
                    //rfv.ErrorMessage="*";
                    //rfv.CssClass="errormesg";
                    //rfv.Display=ValidatorDisplay.Dynamic;

                    //if (rcb_PersonName.SelectedIndex==-1)
                    //{

                    //}
                    //else
                    //{

                    //}

 

                    //RadComboBox rcb_Tag = (RadComboBox)e.Container.Controls[1].Controls[1].FindControl("CountriesRadComboBox");

                                                      

                  
                }
            }
        }

        void rcb_PersonName_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)
        {
            //throw new NotImplementedException();
            AdvancedForm ad = new AdvancedForm();
            ad.LoadCountries(e.Text);
        }

        void rcb_PersonName_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
        {
            //throw new NotImplementedException();

            // DropDownList ddl1 = (DropDownList)sender;
            //  Label1.Text += ddl1.SelectedItem.Text + " ";

            // RadComboBox rcbSelectedRunTime = (RadComboBox)sender;

            AdvancedForm ad = new AdvancedForm();
            ad.LoadCountries(e.Text);
        }

        class AppointmentInfo
        {
            private string id;
            private string subject;
            private DateTime start;
            private DateTime end;
            private string recurParentID;
            private string recurData;
            private int contact_id;

            public string ID
            {
                get { return id; }
                set { id = value; }
            }
            public string Subject
            {
                get { return subject; }
                set { subject = value; }
            }
            public DateTime Start
            {
                get { return start; }
                set { start = value; }
            }
            public DateTime End
            {
                get { return end; }
                set { end = value; }
            }
            public string RecurrenceRule
            {
                get { return recurData; }
                set { recurData = value; }
            }
            public string RecurrenceParentID
            {
                get { return recurParentID; }
                set { recurParentID = value; }
            }
            public int Contact_ID
            {
                get { return contact_id; }
                set { contact_id = value; }
            }
            private AppointmentInfo()
            {
                this.id = Guid.NewGuid().ToString();
            }
            public AppointmentInfo(string subject, DateTime start, DateTime end)
                : this()
            {
                this.subject = subject;
                this.start = start;
                this.end = end;
            }
            public AppointmentInfo(Appointment source)
                : this()
            {
                CopyInfo(source);
            }
            public void CopyInfo(Appointment source)
            {
                subject = source.Subject;
                start = source.Start;
                end = source.End;
                recurData = source.RecurrenceRule;
                if (source.RecurrenceParentID != null)
                    recurParentID = source.RecurrenceParentID.ToString();
                Resource r = source.Resources.GetResourceByType("ContactInfoHere");
                if (r != null)
                    contact_id = (int)r.Key;
            }
        }
        class ContactInfo
        {
            private int id;
            private string name;

            public int Contact_ID
            {
                get { return id; }
            }
            public string Name
            {
                get { return name; }
            }
            public ContactInfo(int id, string name)
            {
                this.id = id;
                this.name = name;
            }
        }

        private List<AppointmentInfo> Appointments
        {
            get
            {
                List<AppointmentInfo> sessApts = Session["sdfsdfsdf"] as List<AppointmentInfo>;
                //          Session[AppointmentsKey] as List<AppointmentInfo>;
                //if (sessApts == null)
                //{
                //    sessApts = new List<AppointmentInfo>();
                //    Session[AppointmentsKey] = sessApts;
                //}
                return sessApts;
            }
        }
        private List<ContactInfo> contact
        {
            get
            {
                List<ContactInfo> roomList = new List<ContactInfo>();
                roomList.Add(new ContactInfo(1, "Margaret Morrison Main Room"));
                roomList.Add(new ContactInfo(2, "Black Auditorium"));
                roomList.Add(new ContactInfo(3, "Doherty Auditorium"));
                return roomList;
            }
        }

        protected void RadScheduler1_FormCreating(object sender, SchedulerFormCreatingEventArgs e)
        {
            //while appointment creating check wether its valid to save or not time span matching or now
        }

        protected void RadScheduler1_AppointmentCreated(object sender, AppointmentCreatedEventArgs e)
        {
            //Check what to to do on when appoiment ment created ///Like enable disable Subject panel
        }

        protected void RadScheduler1_AppointmentDataBound(object sender, SchedulerEventArgs e)
        {

        }
    }
}

 

c) AdvanceForm.ascx
 <%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="AdvancedForm.ascx.cs" Inherits="OnCallSolution.ControlTemplates.OnCallSolution.AdvancedForm" %>

<%@ Register Assembly="Telerik.Web.UI, Version=2013.1.403.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4"
    Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<link rel="Stylesheet" type="text/css" href="/_layouts/OnCallSolution/StyleOnCall.css" />

<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">  
<script language="javascript" type="text/javascript">
    Sys.Application.add_init(function () {
        (function () {

            var $,
     $T,
     $DateTime,
     timePerMinute = 60000,
     timePerHour = timePerMinute * 60,
     timePerDay = timePerHour * 24,
     maxInt = 2147483647,
     maxDate = new Date("9000/01/01"),
     toolTipZIndex = 10000,
     resourceControlSuffix = "_ResourceValue";

            window.SchedulerAdvancedTemplate = function (schedulerElement, formElement, isModal) {
                $ = $telerik.$;
                $T = Telerik.Web.UI;
                $DateTime = $T.Scheduler.DateTime;

                this._scheduler = $find(schedulerElement.id);
                this._schedulerElement = schedulerElement;
                this._formElement = formElement;
                this._schedulerElementId = this._schedulerElement.id;
                this._isModal = isModal;
                this._eventNamespace = schedulerElement.id;

                // We need to obtain the ID of the naming container that
                // contains the advanced template. We can find it from
                // the ID of a known element hosted in the form,
                // such as BasicControlsPanel.
                var basicControlsPanel = $("div.rsAdvBasicControls", formElement);
                if (basicControlsPanel.length == 0)
                    return;

                var basicControlsPanelId = basicControlsPanel[0].id;
                this._templateId = basicControlsPanelId.substring(0, basicControlsPanelId.lastIndexOf("_"));
            };

            window.SchedulerAdvancedTemplate._adjustHeight = function (schedulerElement) {
                // Stretches the rsAdvOptions div to the available height.
                var advancedEditDiv = $("div.rsAdvancedEdit:visible", schedulerElement);
                var contentWrapper = $(".rsAdvContentWrapper", advancedEditDiv);
                var excludedBorders = advancedEditDiv.outerHeight() - advancedEditDiv.height();
                excludedBorders += contentWrapper.outerHeight() - contentWrapper.height();

                var titleHeight = $("div.rsAdvTitle:visible", schedulerElement).outerHeight({ margin: true });

                var buttonsDiv = $("div.rsAdvancedSubmitArea", advancedEditDiv);
                var buttonsHeight = buttonsDiv.outerHeight({ margin: true });

                var targetHeight = $(schedulerElement).height() - titleHeight - buttonsHeight - excludedBorders;
                $(".rsAdvOptionsScroll", advancedEditDiv).height(targetHeight + "px");

                // IE fix
                if (buttonsDiv[0])
                    buttonsDiv[0].style.cssText = buttonsDiv[0].style.cssText;
            };

            window.SchedulerAdvancedTemplate.prototype =
{
    initialize: function () {
        var scheduler = this._scheduler;
        scheduler.add_disposing(Function.createDelegate(this, this.dispose));

        // Enable the buttons in the advanced form
        $("div.rsAdvancedSubmitArea a", this._formElement).attr("onclick", "");

        if (scheduler.get_overflowBehavior() == 1 && !this._isModal)
            window.SchedulerAdvancedTemplate._adjustHeight(this._schedulerElement);

        this._initializePickers();
        this._initializeAdvancedFormValidators();
        this._initializeAllDayCheckbox();

        var recurrenceSupport = this._getRecurrenceEditor() != null;
        if (recurrenceSupport) {
            this._initializeResetExceptions();
        }

        if ($telerik.isIE) {
            var textarea = this._getSubjectTextBox().get_element();
            textarea.style.cssText = textarea.style.cssText;
        }

        // Exclude the spin button arrows from the tab order
        $('.riUp, .riDown', this._formElement).attr("tabindex", "-1");
    },

    dispose: function () {
        if (!this._formElement)
            return;

        $("*", this._formElement).unbind();
        $(document).unbind("." + this._eventNamespace);

        this._pickers = null;
        this._scheduler = null;
        this._schedulerElement = null;
        this._formElement = null;
    },

    // The populate function is needed only when using Web Service data binding.
    populate: function (apt, isInsert) {
        if (!this._clientMode)
            this._initializeClientMode();

        this._appointment = apt;
        this._isInsert = isInsert;

        var isAllDay =
            $DateTime.getTimeOfDay(apt.get_start()) == 0 &&
            $DateTime.getTimeOfDay(apt.get_end()) == 0;

        var aptEndDate = $DateTime.getDate(apt.get_end());
        if (isAllDay)
            aptEndDate = $DateTime.add(aptEndDate, -timePerDay);

        this._getSubjectTextBox().set_value(apt.get_subject());

        var descrTextBox = this._getDescriptionTextBox();
        if (descrTextBox)
            descrTextBox.set_value(apt.get_description());

        this._pickers.startDate.set_selectedDate($DateTime.getDate(apt.get_start()));
        this._pickers.startTime.set_selectedDate(apt.get_start());
        this._pickers.endDate.set_selectedDate(aptEndDate);
        this._pickers.endTime.set_selectedDate(apt.get_end());

        this._populateResources();
        this._populateAttributes();

        this._initalizeResetExceptionsClientMode();

        var allDayCheckBox = $("#" + this._templateId + "_AllDayEvent");
        if (isAllDay != allDayCheckBox[0].checked) {
            allDayCheckBox[0].checked = isAllDay;
            this._onAllDayCheckBoxClick(isAllDay, false);
        }

        this._populateRecurrence();
        this._populateReminder();
        this._populateTimeZones();
    },

    _initializeClientMode: function () {
        this._clientMode = true;
        var template = this;

        $("a.rsAdvEditSave", this._formElement)
            .click(function (e) {
                template._saveClicked();
                $telerik.cancelRawEvent(e);
            })
            .attr("href", "#");

        $("a.rsAdvEditCancel, a.rsAdvEditClose", this._formElement)
            .click(function (e) {
                template._cancelClicked();
                $telerik.cancelRawEvent(e);
            })
            .attr("href", "#");
    },

    _initalizeResetExceptionsClientMode: function () {
        var resetExceptions = $("span.rsAdvResetExceptions > a", this._formElement);
        var hasExceptions = this._appointment.get_recurrenceRule().indexOf("EXDATE") != -1;

        resetExceptions.unbind();

        if (hasExceptions) {
            var template = this;
            var localization = this._scheduler.get_localization();
            resetExceptions
                .attr("href", "#")
                .text(localization.AdvancedReset)
                .click(function () {
                    // Display confirmation dialog
                    template._getRemoveExceptionsDialog()
                        .set_onActionConfirm(function () {
                            // The user has confirmed - proceed
                            template._scheduler.removeRecurrenceExceptions(template._appointment);
                            resetExceptions.text(localization.AdvancedDone);
                        })
                        .show();

                    return false;
                });
        }
        else {
            resetExceptions.text("");
        }
    },

    // Click handler for the "Save" button
    _saveClicked: function () {
        if (typeof (Page_ClientValidate) != "undefined") {
            var validationGroup = this._scheduler.get_validationGroup() + (this._isInsert ? "Insert" : "Edit");
            if (!Page_ClientValidate(validationGroup))
                return;
        }

        var apt = this._appointment;
        apt.set_subject(this._getSubjectTextBox().get_value());

        var descrTextBox = this._getDescriptionTextBox();
        if (descrTextBox)
            apt.set_description(descrTextBox.get_value());

        var isAllDay = $get(this._templateId + "_AllDayEvent").checked;

        var startDate = this._pickers.startDate.get_selectedDate();
        var startTime = $DateTime.getTimeOfDay(this._pickers.startTime.get_selectedDate());
        apt.set_start($DateTime.add(startDate, isAllDay ? 0 : startTime));

        var endDate = this._pickers.endDate.get_selectedDate();
        var endTime = $DateTime.getTimeOfDay(this._pickers.endTime.get_selectedDate());
        apt.set_end($DateTime.add(endDate, isAllDay ? timePerDay : endTime));

        this._saveResources(apt);
        this._saveAttributes(apt);

        this._saveRecurrenceRule(apt);
        this._saveReminder(apt);
        this._saveTimeZone(apt);

        if (this._isInsert)
            this._scheduler.insertAppointment(apt);
        else
            this._scheduler.updateAppointment(apt);

        this._scheduler.hideAdvancedForm();
    },

    _cancelClicked: function () {
        this._scheduler.hideAdvancedForm();
    },

    _saveResources: function (apt) {
        var template = this;
        var schedulerResources = this._scheduler.get_resources();

        this._scheduler.get_resourceTypes().forEach(function (resourceType) {
            var resourceTypeName = resourceType.get_name();
            var baseName = template._templateId + "_Res" + resourceTypeName + resourceControlSuffix;
            var resourcesOfThisType = schedulerResources.getResourcesByType(resourceTypeName);

            if (resourceType.get_allowMultipleValues()) {
                var checkBoxes = $(String.format("input[id*='{0}']", baseName), this._formElement);

                if (checkBoxes.length > 0)
                    apt.get_resources().removeResourcesByType(resourceTypeName);

                for (var i = 0; i < checkBoxes.length; i++) {
                    if (checkBoxes[i].checked && resourcesOfThisType.get_count() >= i)
                        apt.get_resources().add(resourcesOfThisType.getResource(i));
                };
            }
            else {
                var dropDown = $find(baseName);
                if (!dropDown)
                    return;

                apt.get_resources().removeResourcesByType(resourceTypeName);

                if (dropDown.get_selectedIndex() == 0)
                    return;

                var selectedValue = dropDown.get_selectedItem().get_value();
                var newResource = schedulerResources.findAll(function (res) {
                    return res.get_type() == resourceTypeName &&
                           res._getInternalKey() == selectedValue;
                }).getResource(0) || null;

                if (newResource)
                    apt.get_resources().add(newResource);
            }
        });
    },

    _saveAttributes: function (apt) {
        var template = this;
        var aptAttributes = apt.get_attributes();
        $.each(this._scheduler.get_customAttributeNames(), function () {
            var attrName = this.toString();
            var textBox = $find(template._templateId + "_Attr" + attrName);
            if (!textBox)
                return;

            aptAttributes.removeAttribute(attrName);
            aptAttributes.setAttribute(attrName, textBox.get_value());
        });
    },

    _getResourceIndex: function (res) {
        var resources = this._scheduler.get_resources().getResourcesByType(res.get_type());
        var index, length;

        for (index = 0, length = resources.get_count(); index < length; index++) {
            var filteredRes = resources.getResource(index);
            if (filteredRes.get_type() == res.get_type() && filteredRes.get_key() == res.get_key())
                return index;
        };

        return -1;
    },

    _populateResources: function () {
        var template = this;
        var resourceTypes = this._scheduler.get_resourceTypes();

        resourceTypes.forEach(function (resType) {
            var baseName = template._templateId + "_Res" + resType.get_name() + resourceControlSuffix;

            if (resType.get_allowMultipleValues()) {
                // Clear the resource checkboxes
                $(String.format("input[id*='{0}']", baseName), this._formElement)
                    .each(function () {
                        this.checked = false;
                    });
            }
            else {
                var dropDown = $find(baseName);
                if (dropDown)
                    dropDown.get_items().getItem(0).select();
            }
        });

        this._appointment.get_resources().forEach(function (res) {
            var baseName = template._templateId + "_Res" + res.get_type() + resourceControlSuffix;
            var resType = resourceTypes.getResourceTypeByName(res.get_type());
            if (resType && resType.get_allowMultipleValues()) {
                var resIndex = template._getResourceIndex(res);
                var checkBox = $get(baseName + "_" + resIndex);

                if (checkBox)
                    checkBox.checked = true;
            }
            else {
                var dropDown = $get(baseName);
                if (dropDown)
                    template._selectDropDownValue(dropDown, res._getInternalKey());
            }
        });
    },

    _populateAttributes: function () {
        var template = this;
        this._appointment.get_attributes().forEach(function (attr, attrValue) {
            var textBox = $find(template._templateId + "_Attr" + attr);
            if (!textBox)
                return;

            textBox.set_value(attrValue);
        });
    },

    _saveRecurrenceRule: function (apt) {
        var editor = this._getRecurrenceEditor();
        if (!editor) return;

        editor.set_startDate(this._scheduler.displayToUtc(apt.get_start()));
        editor.set_endDate(this._scheduler.displayToUtc(apt.get_end()));
        editor.set_firstDayOfWeek(this._scheduler.get_firstDayOfWeek());

        var rrule = editor.get_recurrenceRule();
        if (!rrule) {
            apt.set_recurrenceRule("");
            return;
        }

        // Restore the original recurrence exceptions if the
        // appointment was already recurring.
        var originalRRule = $T.RecurrenceRule.parse(apt.get_recurrenceRule());
        if (originalRRule)
            Array.addRange(rrule.get_exceptions(), originalRRule.get_exceptions());

        var range = rrule.get_range();
        if (range.get_recursUntil().getTime() != maxDate.getTime()) {
            var recursUntil = this._scheduler.displayToUtc(range.get_recursUntil());

            if (!this._getElement("AllDayEvent").checked)
                recursUntil = $DateTime.add(recursUntil, timePerDay);

            range.set_recursUntil(recursUntil);
        }

        apt.set_recurrenceRule(rrule.toString());
    },

    _saveTimeZone: function (apt) {
        var timeZonesDropDown = this._getTimeZonesDropDown();
        if (!timeZonesDropDown) return;

        var selectedValue = timeZonesDropDown.get_value();
        if (selectedValue != this._scheduler._timeZoneID)
            apt.set_timeZoneID(selectedValue);

    },

    _saveReminder: function (apt) {
        var reminderDropDown = this._getReminderDropDown();
        if (!reminderDropDown) return;

        var selectedValue = reminderDropDown.get_value();
        var aptReminders = apt.get_reminders();
        if (selectedValue) {
            var reminderMinutes = parseInt(selectedValue, 10);
            if (aptReminders.get_count() > 0) {
                aptReminders.getReminder(0).set_trigger(reminderMinutes);
            }
            else {
                var reminder = new $T.Reminder();
                reminder.set_trigger(reminderMinutes);
                aptReminders.add(reminder);
            }
        }
        else {
            if (aptReminders.get_count() > 0)
                aptReminders.removeAt(0);
        }
    },

    _populateRecurrence: function () {
        var editor = this._getRecurrenceEditor();
        if (!editor) return;

        var rrule = $T.RecurrenceRule.parse(this._appointment.get_recurrenceRule());
        if (rrule) {
            var range = rrule.get_range();
            var recursUntil = range.get_recursUntil().getTime();
            if (recursUntil != maxDate.getTime()) {
                recursUntil = this._scheduler.utcToDisplay(range.get_recursUntil());

                if (!this._getElement("AllDayEvent").checked)
                    recursUntil = $DateTime.add(recursUntil, -timePerDay);

                range.set_recursUntil(recursUntil);
            }
        }
        else {
            editor.set_startDate(this._appointment.get_start());
            editor.set_endDate(this._appointment.get_end());
        }

        editor.set_recurrenceRule(rrule);
    },

    _populateTimeZones: function () {
        var timeZonesDropDown = this._getTimeZonesDropDown();
        if (!timeZonesDropDown) return;

        var timeZone = this._appointment.get_timeZoneID();
        if (!timeZone)
            this._selectDropDownValue(timeZonesDropDown.get_element(), this._scheduler._timeZoneId);
        else
            this._selectDropDownValue(timeZonesDropDown.get_element(), timeZone);
    },

    _populateReminder: function () {
        var reminderDropDown = this._getReminderDropDown();
        if (!reminderDropDown) return;

        var reminder = this._appointment.get_reminders().getReminder(0);
        if (!reminder)
            this._selectDropDownValue(reminderDropDown.get_element(), "");
        else
            this._selectDropDownValue(reminderDropDown.get_element(), reminder.get_trigger());
    },

    _selectDropDownValue: function (dropDown, value) {
        var comboBox = $find(dropDown.id);
        if (comboBox && $T.RadComboBox.isInstanceOfType(comboBox)) {
            comboBox.get_items().forEach(function (item) {
                if (item.get_value() == value)
                    item.select();
            });
        }
        else {
            $.each(dropDown.options, function () {
                if (this.value == value) {
                    this.selected = true;
                    return false;
                }
            });
        }
    },

    _getSubjectTextBox: function () {
        return $find(this._templateId + "_SubjectText");
    },

    _getDescriptionTextBox: function () {
        return $find(this._templateId + "_DescriptionText");
    },

    _getRecurrenceEditor: function () {
        return $find(this._templateId + "_AppointmentRecurrenceEditor");
    },

    _getReminderDropDown: function () {
        return this._getControl("ReminderDropDown")
    },

    _getTimeZonesDropDown: function () {
        return this._getControl("TimeZonesDropDown")
    },

    _getElement: function (id) {
        return $get(this._templateId + "_" + id);
    },

    _getControl: function (id) {
        return $find(this._templateId + "_" + id);
    },

    _initializePickers: function () {
        // Show picker pop-ups when the inputs are focused

        var showPopupDelegate = Function.createDelegate(this, this._showPopup);

        var templateId = this._templateId;
        this._pickers =
          {
              "startDate": $find(templateId + "_StartDate"),
              "endDate": $find(templateId + "_EndDate"),
              "startTime": $find(templateId + "_StartTime"),
              "endTime": $find(templateId + "_EndTime")
          };

        $.each(
               this._pickers,
               function () {
                   if (this && this.get_dateInput)
                       this.get_dateInput().add_focus(showPopupDelegate);
               });

        var pickerControls = [
                         $get(this._pickers.startDate.get_element().id + "_wrapper"),
                         $get(this._pickers.startTime.get_element().id + "_wrapper"),
                         $get(this._pickers.startTime.get_element().id + "_timeView_wrapper"),
                         $get(this._pickers.endDate.get_element().id + "_wrapper"),
                         $get(this._pickers.endTime.get_element().id + "_wrapper"),
                         $get(this._pickers.endTime.get_element().id + "_timeView_wrapper"),
                         $get(this._templateId + "_SharedCalendar")
                    ];

        // Hide the pickers when the focus moves to another element in the template
        var advancedTemplate = this;
        var eventName = "focusin";

        $(this._formElement).bind(eventName,
               function (e) {
                   var inPickerControls = false;
                   for (var i = 0, len = pickerControls.length; i < len; i++) {
                       var control = pickerControls[i];
                       if ($telerik.isDescendantOrSelf(control, e.target)) {
                           inPickerControls = true;
                           break;
                       }
                   }

                   if (!inPickerControls)
                       advancedTemplate._hidePickerPopups();
               });

        // Custom jQuery event fired when the pop-up advanced
        // form has been moved.
        $(this._formElement).bind("formMoving", function () {
            advancedTemplate._hidePickerPopups();
        });

        if (this._isModal)
            $(document).bind("scroll." + this._eventNamespace, function () {
                advancedTemplate._hidePickerPopups();
            });
    },

    _initializeAdvancedFormValidators: function () {
        var toolTip = this._createValidatorToolTip();

        if (typeof (Page_Validators) == "undefined")
            return;

        for (var validatorIndex in Page_Validators) {
            var validator = Page_Validators[validatorIndex];
            if (this._validatorIsInTemplate(validator)) {
                var control = $("#" + validator.controltovalidate);
                if (control.length == 0)
                    break;

                if (control.parent().is(".rsAdvDatePicker") ||
                         control.parent().is(".rsAdvTimePicker")) {
                    $("#" + validator.controltovalidate + "_dateInput")
                              .bind("focus", { "toolTip": toolTip }, this._showToolTip)
                              .bind("blur", { "toolTip": toolTip }, this._hideToolTip)
                              [0].errorMessage = validator.errormessage;
                }
                else {
                    control.addClass("rsValidatedInput");
                }

                control[0].errorMessage = validator.errormessage;
                this._updateValidator(validator, control);
            }
        }

        var advancedTemplate = this;
        var originalValidatorUpdateDisplay = ValidatorUpdateDisplay;

        ValidatorUpdateDisplay = function (validator) {
            if (advancedTemplate._validatorIsInTemplate(validator) && validator.controltovalidate) {
                advancedTemplate._updateValidator(validator);
            }
            else {
                originalValidatorUpdateDisplay(validator);
            }
        };

        $(".rsValidatedInput", this._formElement)
               .bind("focus", { "toolTip": toolTip }, this._showToolTip)
               .bind("blur", { "toolTip": toolTip }, this._hideToolTip);
    },

    _initializeAllDayCheckbox: function () {
        var allDayCheckbox = $("#" + this._templateId + "_AllDayEvent");
        var controlList = $(allDayCheckbox[0].parentNode.parentNode.parentNode);
        var timePickers = controlList.find('.rsAdvTimePicker');

        // RadDateTimePicker-display-hackedy-hack
        if ($telerik.isIE6 || $telerik.isIE7) {
            $('.rsAdvTimePicker, .rsAdvDatePicker', this._formElement).css(
               {
                   display: "inline",
                   zoom: 1,
                   width: ""
               });
        }
        else {
            $('.rsAdvTimePicker, .rsAdvDatePicker', this._formElement).css(
               {
                   display: "inline-block",
                   width: ""
               });
        }

        var timePickersWidth = $("#" + this._templateId + "_StartTime_dateInput").outerWidth();

        timePickers.width(timePickersWidth);

        var initialPickersWidth = $(".rsTimePick", this._formElement).eq(0).outerWidth();
        var allDayPickersWidth = initialPickersWidth - timePickersWidth;

        var startTimeValidator = $get(this._templateId + "_StartTimeValidator");
        var endTimeValidator = $get(this._templateId + "_StartTimeValidator");

        var advancedTemplate = this;

        // IE fix - the hidden input pushes down the other TimePicker elements during animation
        controlList.find('.rsAdvTimePicker > input').css("display", "none");

        var clickHandler = function (allDay, animate) {
            var showTimePickers = function () {
                if ($telerik.isSafari || $telerik.isOpera)
                    timePickers.css("display", "inline-block");
                else
                    timePickers.show();
            };

            if (!allDay)
                showTimePickers();

            controlList.find('.rsTimePick').each(function () {
                if (animate) {
                    $(this).stop();

                    if (allDay)
                        $(this).animate({ width: allDayPickersWidth }, "fast",
                                   "linear", function () { timePickers.hide(); });
                    else
                        $(this).animate({ width: initialPickersWidth }, "fast");
                }
                else {
                    if (allDay) {
                        timePickers.hide();
                        $(this).width(allDayPickersWidth);
                    }
                    else {
                        $(this).width(initialPickersWidth);
                    }
                }
            });

            if (typeof (ValidatorEnable) != "undefined") {
                ValidatorEnable(startTimeValidator, !allDay);
                ValidatorEnable(endTimeValidator, !allDay);
            }

            var startTimePicker = advancedTemplate._pickers.startTime;
            startTimePicker.set_enabled(!allDay);

            var endTimePicker = advancedTemplate._pickers.endTime;
            endTimePicker.set_enabled(!allDay);
        };

        this._onAllDayCheckBoxClick = clickHandler;

        clickHandler(allDayCheckbox[0].checked, false);
        allDayCheckbox.click(function () { clickHandler(this.checked, true); });
    },

    _initializeResetExceptions: function () {
        var resetExceptions = $("#" + this._templateId + "_ResetExceptions");
        if (resetExceptions.length == 0)
            return;

        var scheduler = this._scheduler;
        var template = this;
        var localization = scheduler.get_localization();
        var doneMessage = localization.AdvancedDone;
        if (resetExceptions[0].innerHTML.indexOf(doneMessage) > -1) {
            // Hide "Done" after 2 seconds
            resetExceptions.click(function () { return false; });
            window.setTimeout(function () { resetExceptions.fadeOut("slow"); }, 2000);
        }
        else {
            resetExceptions.click(
                function () {
                    // Display confirmation dialog
                    var dialog = template._getRemoveExceptionsDialog();
                    dialog.set_onActionConfirm(function () {
                        // The user has confirmed - proceed with postback
                        resetExceptions[0].innerHTML = localization.AdvancedWorking;
                        window.location.href = resetExceptions[0].href;

                        dialog.dispose();
                    })
                        .show();

                    return false;
                });
        }
    },

    _getRemoveExceptionsDialog: function () {
        var localization = this._scheduler.get_localization();
        return $telerik.$.modal(this._formElement)
            .initialize()
            .set_content({
                title: localization.ConfirmResetExceptionsTitle,
                content: localization.ConfirmResetExceptionsText,
                ok: localization.ConfirmOK,
                cancel: localization.ConfirmCancel
            });
    },

    _updateValidator: function (validator) {
        var control = $("#" + validator.controltovalidate);

        if (control.is(".rsValidatedInput"))
            control = control.parent();

        if (!validator.isvalid)
            control.addClass("rsInvalid");
        else
            control.removeClass("rsInvalid");
    },

    _validatorIsInTemplate: function (validator) {
        return $(validator).parents().is("#" + this._schedulerElementId);
    },

    _createValidatorToolTip: function () {
        return $('<div></div>').hide().appendTo($('.rsAdvancedEdit:visible', $get(this._schedulerElementId)));
    },

    _showToolTip: function (e) {
        var toolTip = e.data.toolTip;
        var _control = $(this);
        var isTextArea = false;
        var controlParent = _control.parent();

        if (_control.is("textarea")) {
            isTextArea = true;
            _control = controlParent;
        }

        var isInvalid = _control.is(".rsInvalid");
        // Date and time pickers are validated against a hidden input located one level up in the DOM
        isInvalid = isInvalid || controlParent.parent().children().is(".rsInvalid");

        if (isInvalid) {
            toolTip
                    .css("visibility", "hidden")
                    .text(this.errorMessage)
                    .addClass("rsValidatorTooltip");

            var positionOrigin = _control;
            if (controlParent.is(".riCell"))
                positionOrigin = controlParent;

            var pos = positionOrigin.position();
            var toolTipLeft = pos.left + "px";

            if (isTextArea) {
                toolTipLeft = (pos.left + positionOrigin.outerWidth() - toolTip.outerWidth()) + "px";
            }

            var toolTipTop = (pos.top - toolTip.outerHeight()) + "px";
            toolTip
                    .css({
                        top: toolTipTop,
                        left: toolTipLeft,
                        zIndex: toolTipZIndex,
                        visibility: "visible"
                    })
                    .fadeIn("fast");
        }
    },

    _hideToolTip: function (e) {
        var toolTip = e.data.toolTip;
        toolTip.hide();
    },

    _hidePickerPopups: function () {
        if (!this._pickers)
            return;

        for (var pickerId in this._pickers) {
            var picker = this._pickers[pickerId];

            if (!picker)
                continue;

            if (picker.hideTimePopup)
                picker.hideTimePopup();
            else
                picker.hidePopup();
        }
    },

    _showPopup: function (sender) {
        this._hidePickerPopups();

        if (sender.Owner.showTimePopup)
            sender.Owner.showTimePopup();
        else
            sender.Owner.showPopup();
    }
};
        })();
    });

 
 
</script> 
</telerik:RadCodeBlock>

 

<div class="rsAdvancedEdit rsAdvancedModal" style="position: relative">
    <div class="rsModalBgTopLeft">
    </div>
    <div class="rsModalBgTopRight">
    </div>
    <div class="rsModalBgBottomLeft">
    </div>
    <div class="rsModalBgBottomRight">
    </div>
    <%-- Title bar. --%>
    <div class="rsAdvTitle">
        <%-- The rsAdvInnerTitle element is used as a drag handle when the form is modal. --%>
        <h1 class="rsAdvInnerTitle">
            <%= (this.Mode.ToString() == "Edit") ? Owner.Localization.AdvancedEditAppointment : Owner.Localization.AdvancedNewAppointment %></h1>
        <asp:linkbutton runat="server" id="AdvancedEditCloseButton" cssclass="rsAdvEditClose"
            commandname="Cancel" causesvalidation="false" tooltip='<%# Owner.Localization.AdvancedClose %>'>
            <%= Owner.Localization.AdvancedClose %>
        </asp:linkbutton>
    </div>
    <div class="rsAdvContentWrapper">
        <%-- Scroll container - when the form height exceeds MaximumHeight scrollbars will appear on this element--%>
        <div class="rsAdvOptionsScroll">
            <asp:panel runat="server" id="AdvancedEditOptionsPanel" cssclass="rsAdvOptions">
                <asp:panel runat="server" id="BasicControlsPanel" cssclass="rsAdvBasicControls" ondatabinding="BasicControlsPanel_DataBinding">
                    <telerik:RadTextBox runat="server" ID="SubjectText" Width="586px" Label='<%# Owner.Localization.AdvancedSubject + ":" %>'
                        EnableSingleInputRendering="false" Height="50px" />
                        <telerik:RadTextBox runat="server" ID="RadTextHiddenAppID"  Visible="false" />
                    <asp:requiredfieldvalidator runat="server" id="SubjectValidator" controltovalidate="SubjectText"
                        enableclientscript="true" display="None" cssclass="rsValidatorMsg" />
                    <ul class="rsTimePickers">
                        <li class="rsTimePick" style="width: 244px;">
                            <label for='<%= StartDate.ClientID %>_dateInput_text'>
                                <%= Owner.Localization.AdvancedFrom %></label><%--
           Leaving a newline here will affect the layout, so we use a comment instead.
                                --%><telerik:RadDatePicker runat="server" ID="StartDate" CssClass="rsAdvDatePicker"
                                    Width="85px" SharedCalendarID="SharedCalendar"
                                Skin='<%# Owner.Skin %>' Culture='<%# Owner.Culture %>'
                                    MinDate="1900-01-01">
                                    <DatePopupButton Visible="false" />
                                    <DateInput ID="DateInput2" runat="server" DateFormat='<%# Owner.AdvancedForm.DateFormat %>'
                                        EmptyMessageStyle-CssClass="riError" EmptyMessage=" " EnableSingleInputRendering="false" />
                                </telerik:RadDatePicker>
                            <%--
       
                            --%>
                            <telerik:RadTimePicker runat="server" ID="StartTime" CssClass="rsAdvTimePicker"
                                Width="65px" Skin='<%# Owner.Skin %>' Culture='<%# Owner.Culture %>'>
                                <DateInput ID="DateInput3" runat="server" EmptyMessageStyle-CssClass="riError" EmptyMessage=" "
                                    EnableSingleInputRendering="false" />
                                <TimePopupButton Visible="false" />
                                <TimeView ID="TimeView1" runat="server" Columns="2" ShowHeader="false" StartTime="08:00"
                                    EndTime="18:00" Interval="00:30" />
                            </telerik:RadTimePicker>
                        </li>
                        <li class="rsTimeZonesWrapper">
                            <telerik:RadComboBox runat="server" Visible="true" ID="TimeZonesDropDown" Width="230"
                                Label="<%# Owner.Localization.AdvancedTimeZone %>" Skin='<%# Owner.Skin %>'>
                            </telerik:RadComboBox>
                        </li>
                        <li class="rsAllDayWrapper">
                            <asp:checkbox runat="server" id="AllDayEvent" cssclass="rsAdvChkWrap" checked="false" />
                        </li>
                        <li class="rsTimePick rsEndTimePick" style="width: 244px;">
                            <label for='<%= EndDate.ClientID %>_dateInput_text'>
                                <%= Owner.Localization.AdvancedTo%></label><%--
       
                                --%><telerik:RadDatePicker runat="server" ID="EndDate" CssClass="rsAdvDatePicker"
                                    Width="85px" SharedCalendarID="SharedCalendar"
                                Skin='<%# Owner.Skin %>' Culture='<%# Owner.Culture %>'
                                    MinDate="1900-01-01">
                                    <DatePopupButton Visible="false" />
                                    <DateInput ID="DateInput4" runat="server" DateFormat='<%# Owner.AdvancedForm.DateFormat %>'
                                        EmptyMessageStyle-CssClass="riError" EmptyMessage=" " EnableSingleInputRendering="false" />
                                </telerik:RadDatePicker>
                            <%--
       
                            --%>
                            <telerik:RadTimePicker runat="server" ID="EndTime" CssClass="rsAdvTimePicker"
                                Width="65px" Skin='<%# Owner.Skin %>' Culture='<%# Owner.Culture %>'>
                                <DateInput ID="DateInput5" runat="server" EmptyMessageStyle-CssClass="riError" EmptyMessage=" "
                                    EnableSingleInputRendering="false" />
                                <TimePopupButton Visible="false" />
                                <TimeView ID="TimeView2" runat="server" Columns="2" ShowHeader="false" StartTime="08:00"
                                    EndTime="18:00" Interval="00:30" />
                            </telerik:RadTimePicker>
                        </li>
                    </ul>
                    <div class="rsReminderWrapper" style="display:none;">
                        <telerik:RadComboBox runat="server" ID="ReminderDropDown" Width="120px" Skin='<%# Owner.Skin %>'
                            Label="<%# Owner.Localization.Reminder %>">
                            <Items>
                                <telerik:RadComboBoxItem Text='<%# Owner.Localization.ReminderNone %>' Value="" />
                                <telerik:RadComboBoxItem Text='<%# "0 " + Owner.Localization.ReminderMinutes %>'
                                    Value="0" />
                                <telerik:RadComboBoxItem Text='<%# "5 " + Owner.Localization.ReminderMinutes %>'
                                    Value="5" />
                                <telerik:RadComboBoxItem Text='<%# "10 " + Owner.Localization.ReminderMinutes %>'
                                    Value="10" />
                                <telerik:RadComboBoxItem Text='<%# "15 " + Owner.Localization.ReminderMinutes %>'
                                    Value="15" />
                                <telerik:RadComboBoxItem Text='<%# "30 " + Owner.Localization.ReminderMinutes %>'
                                    Value="30" />
                                <telerik:RadComboBoxItem Text='<%# "1 " + Owner.Localization.ReminderHour %>' Value="60" />
                                <telerik:RadComboBoxItem Text='<%# "2 " + Owner.Localization.ReminderHours %>' Value="120" />
                                <telerik:RadComboBoxItem Text='<%# "3 " + Owner.Localization.ReminderHours %>' Value="180" />
                                <telerik:RadComboBoxItem Text='<%# "4 " + Owner.Localization.ReminderHours %>' Value="240" />
                                <telerik:RadComboBoxItem Text='<%# "5 " + Owner.Localization.ReminderHours %>' Value="300" />
                                <telerik:RadComboBoxItem Text='<%# "6 " + Owner.Localization.ReminderHours %>' Value="360" />
                                <telerik:RadComboBoxItem Text='<%# "7 " + Owner.Localization.ReminderHours %>' Value="420" />
                                <telerik:RadComboBoxItem Text='<%# "8 " + Owner.Localization.ReminderHours %>' Value="480" />
                                <telerik:RadComboBoxItem Text='<%# "9 " + Owner.Localization.ReminderHours %>' Value="540" />
                                <telerik:RadComboBoxItem Text='<%# "10 " + Owner.Localization.ReminderHours %>' Value="600" />
                                <telerik:RadComboBoxItem Text='<%# "11 " + Owner.Localization.ReminderHours %>' Value="660" />
                                <telerik:RadComboBoxItem Text='<%# "12 " + Owner.Localization.ReminderHours %>' Value="720" />
                                <telerik:RadComboBoxItem Text='<%# "18 " + Owner.Localization.ReminderHours %>' Value="1080" />
                                <telerik:RadComboBoxItem Text='<%# "1 " + Owner.Localization.ReminderDays %>' Value="1440" />
                                <telerik:RadComboBoxItem Text='<%# "2 " + Owner.Localization.ReminderDays %>' Value="2880" />
                                <telerik:RadComboBoxItem Text='<%# "3 " + Owner.Localization.ReminderDays %>' Value="4320" />
                                <telerik:RadComboBoxItem Text='<%# "4 " + Owner.Localization.ReminderDays %>' Value="5760" />
                                <telerik:RadComboBoxItem Text='<%# "1 " + Owner.Localization.ReminderWeek %>' Value="10080" />
                                <telerik:RadComboBoxItem Text='<%# "2 " + Owner.Localization.ReminderWeeks %>' Value="20160" />
                            </Items>
                        </telerik:RadComboBox>
                    </div>
                    <asp:requiredfieldvalidator runat="server" id="StartDateValidator" controltovalidate="StartDate"
                        enableclientscript="true" display="None" cssclass="rsValidatorMsg" />
                    <asp:requiredfieldvalidator runat="server" id="StartTimeValidator" controltovalidate="StartTime"
                        enableclientscript="true" display="None" cssclass="rsValidatorMsg" />
                    <asp:requiredfieldvalidator runat="server" id="EndDateValidator" controltovalidate="EndDate"
                        enableclientscript="true" display="None" cssclass="rsValidatorMsg" />
                    <asp:requiredfieldvalidator runat="server" id="EndTimeValidator" controltovalidate="EndTime"
                        enableclientscript="true" display="None" cssclass="rsValidatorMsg" />
                    <asp:customvalidator runat="server" id="DurationValidator" controltovalidate="StartDate"
                        enableclientscript="false" display="Dynamic" cssclass="rsValidatorMsg rsInvalid"
                        onservervalidate="DurationValidator_OnServerValidate" />
                </asp:panel>
                <asp:panel runat="server" id="AdvancedControlsPanel" cssclass="rsAdvMoreControls">
                    <telerik:RadComboBox ID="ContinentsRadComboBox" runat="server" Width="186px" Label="Select Person:"
                        OnClientSelectedIndexChanged="LoadCountries" />
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="*"  ControlToValidate="ContinentsRadComboBox" enableclientscript="true" display="None" cssclass="rsValidatorMsg" >
                        </asp:RequiredFieldValidator>
                    <telerik:RadComboBox ID="CountriesRadComboBox" runat="server" Label="Select Tag:" Width="186px"
                        OnItemsRequested="CountriesRadComboBox_ItemsRequested" OnClientItemsRequested="CountriesLoaded"
                        OnClientLoad="CountriesComboClientLoad" EnableViewState="false" />
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="*"  ControlToValidate="CountriesRadComboBox" enableclientscript="true" display="None" cssclass="rsValidatorMsg" >
                        </asp:RequiredFieldValidator>
                </asp:panel>
               
                <telerik:RadTextBox runat="server" ID="DescriptionText" TextMode="SingleLine" Columns="1"
                    Rows="5" Width="586px" Label='<%# Owner.Localization.AdvancedDescription + ":" %>'
                    Text='<%# Eval("Description") %>' EnableSingleInputRendering="false" Visible="false" />
                <span class="rsAdvResetExceptions">
                    <asp:linkbutton runat="server" id="ResetExceptions" onclick="ResetExceptions_OnClick" />
                </span>
                <telerik:RadSchedulerRecurrenceEditor runat="server" ID="AppointmentRecurrenceEditor" />
                <asp:hiddenfield runat="server" id="OriginalRecurrenceRule" />
                <telerik:RadCalendar runat="server" ID="SharedCalendar" Skin='<%# Owner.Skin %>'
                    CultureInfo='<%# Owner.Culture %>' ShowRowHeaders="false" RangeMinDate="1900-01-01" />
            </asp:panel>
        </div>
        <asp:panel runat="server" id="ButtonsPanel" cssclass="rsAdvancedSubmitArea">
            <div class="rsAdvButtonWrapper">
                <asp:linkbutton runat="server" id="UpdateButton" cssclass="rsAdvEditSave" >
                    <span>
                        <%= Owner.Localization.Save %></span>
                </asp:linkbutton>
                <asp:linkbutton runat="server" id="CancelButton" cssclass="rsAdvEditCancel" commandname="Cancel"
                    causesvalidation="false">
                    <span>
                        <%= Owner.Localization.Cancel %></span>
                </asp:linkbutton>
            </div>
        </asp:panel>
    </div>
</div>

 

d) AdvanceForm.ascx.cs
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.ComponentModel;

using System.Drawing;
using Telerik.Web.UI;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using OnCallSolution.WPScedulerSharepointWebpart;

 

/// <summary>
/// Specifies the advanced form mode.
/// </summary>
public enum AdvancedFormMode
{
    Insert,
    Edit
}

namespace OnCallSolution.ControlTemplates.OnCallSolution
{
    public partial class AdvancedForm : UserControl
    {
        #region Private members

        private string _selectedCountry;

        public int _ContactID;
        public string _TagName;
        public string _PersonName;
        public string _Tag;

        public int _ContactIDofPerson;
        public int _Asset_Contact_Tag_ID;

      

        private bool FormInitialized
        {
            get
            {
                return (bool)(ViewState["FormInitialized"] ?? false);
            }

            set
            {
                ViewState["FormInitialized"] = value;
            }
        }

        private AdvancedFormMode mode = AdvancedFormMode.Insert;

        #endregion

        #region Protected properties

        protected RadScheduler Owner
        {
            get
            {
                return Appointment.Owner;
            }
        }

        protected Appointment Appointment
        {
            get
            {
                SchedulerFormContainer container = (SchedulerFormContainer)BindingContainer;
                return container.Appointment;
            }
        }

        #endregion

        #region Attributes and resources

        //Continent, Coutry  
        [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
        public string Continent
        {
            get
            {
                return ContinentsRadComboBox.SelectedValue;
                //insert the first item
            }

            set
            {
                ContinentsRadComboBox.SelectedValue = value;
              
            }
        }

        [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
        public string Country
        {
            get
            {
                return CountriesRadComboBox.SelectedValue;
            }

            set
            {
                // Store the selected country ID until we obtain the continent ID  
                _selectedCountry = value;
            }
        }

        ////values set for custom things for person and Tag combobox
        //[Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
        //public string ContinentPersonName
        //{
        //    get
        //    {
        //        return ContinentsRadComboBox.SelectedItem.Text.ToString();
        //        //insert the first item
        //    }

        //    set
        //    {
        //        _PersonName = value;
        //    }
        //}

        //[Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
        //public string CountryTagName
        //{
        //    get
        //    {
        //        return CountriesRadComboBox.SelectedItem.Text.ToString();
        //    }

        //    set
        //    {
        //        // Store the selected country ID until we obtain the continent ID  
        //        _Tag = value;
        //    }
        //}

      

        protected void LoadContinents()
        {
            SqlConnection connection = new SqlConnection(
            ConfigurationManager.ConnectionStrings["OnCallConnectionString"].ConnectionString);

            string query = @"select  distinct AC.Contact_ID, C.Name from  OC_Asset_Contact_Tag AC join
                            OC_Asset_Tag_Master T on AC.Asset_Tags_Master_ID=T.Asset_Tags_Master_ID
                            join dbo.OC_Contact C on C.Contact_ID=AC.Contact_ID
                            where AC.Status=1
                            and C.Status=1
                            order by c.Name";

            SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
            DataTable dt = new DataTable();
            adapter.Fill(dt);
            ContinentsRadComboBox.Items.Clear();
            ContinentsRadComboBox.Items.Insert(0, new RadComboBoxItem("- Select a Contact -"));
            ContinentsRadComboBox.AppendDataBoundItems = true;
            ContinentsRadComboBox.DataTextField = "Name";
            ContinentsRadComboBox.DataValueField = "Contact_ID";
            ContinentsRadComboBox.DataSource = dt;
            ContinentsRadComboBox.DataBind();
            ContinentsRadComboBox.DataSource = null;
          

        }

        public void LoadCountries(string ContactID)//previous working method was private  public void LoadCountries(string ContactID)
        {
            SqlConnection connection = new SqlConnection(
            ConfigurationManager.ConnectionStrings["OnCallConnectionString"].ConnectionString);

            //select a country based on the continentID
            string query = @" Select distinct T.Asset_Tags_Master_ID,t.Tag_Name  from OC_Asset_Contact_Tag CT
                            inner join  OC_Asset_Tag_Master T 
                            on t.Asset_Tags_Master_ID=ct.Asset_Tags_Master_ID
                            inner join OC_Contact C on c.Contact_ID=  ct.Contact_ID
                            where C.Contact_ID=@Contact_ID
                            and ct.Status=1";
            SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
            adapter.SelectCommand.Parameters.AddWithValue("@Contact_ID", ContactID);

            DataTable dt = new DataTable();
            adapter.Fill(dt);

            CountriesRadComboBox.DataTextField = "Tag_Name";
            CountriesRadComboBox.DataValueField = "Asset_Tags_Master_ID";
            CountriesRadComboBox.DataSource = dt;
            CountriesRadComboBox.DataBind();
        }

        protected void CountriesRadComboBox_ItemsRequested(object o, RadComboBoxItemsRequestedEventArgs e)
        {
            // e.Text is the first parameter of the requestItems method   
            // invoked in LoadCountries method   
            LoadCountries(e.Text);

            //RadComboBox rcb_PersonName = (RadComboBox)e.Container.Controls[1].Controls[1].FindControl("ContinentsRadComboBox");

            //RadComboBox rcb_Tag = (RadComboBox)e.Container.Controls[1].Controls[1].FindControl("CountriesRadComboBox");
           

        }

        [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
        public string Description
        {
            get
            {
                return DescriptionText.Text;
            }

            set
            {
                DescriptionText.Text = value;
            }
        }

 

        #endregion

        #region Public properties

        public AdvancedFormMode Mode
        {
            get
            {
                return mode;
            }
            set
            {
                mode = value;
            }
        }

        [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
        public string Subject
        {
            get
            {
                return SubjectText.Text;
            }

            set
            {
                SubjectText.Text = value;
            }
        }

        [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
        public DateTime Start
        {
            get
            {
                DateTime result = StartDate.SelectedDate.Value.Date;

                if (AllDayEvent.Checked)
                {
                    result = result.Date;
                }
                else
                {
                    TimeSpan time = StartTime.SelectedDate.Value.TimeOfDay;
                    result = result.Add(time);
                }

                return Owner.DisplayToUtc(result);
            }

            set
            {
                StartDate.SelectedDate = Owner.UtcToDisplay(value);
                StartTime.SelectedDate = Owner.UtcToDisplay(value);
            }
        }

        [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
        public DateTime End
        {
            get
            {
                DateTime result = EndDate.SelectedDate.Value.Date;

                if (AllDayEvent.Checked)
                {
                    result = result.Date.AddDays(1);
                }
                else
                {
                    TimeSpan time = EndTime.SelectedDate.Value.TimeOfDay;
                    result = result.Add(time);
                }

                return Owner.DisplayToUtc(result);
            }

            set
            {
                EndDate.SelectedDate = Owner.UtcToDisplay(value);
                EndTime.SelectedDate = Owner.UtcToDisplay(value);
            }
        }

        [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
        public string RecurrenceRuleText
        {
            get
            {
                if (Owner.RecurrenceSupport)
                {
                    bool dateSpecified = StartDate.SelectedDate.HasValue && EndDate.SelectedDate.HasValue;
                    bool timeSpecified = StartTime.SelectedDate.HasValue && EndTime.SelectedDate.HasValue;

                    if ((AllDayEvent.Checked && !dateSpecified) ||
                        (!AllDayEvent.Checked && !(dateSpecified && timeSpecified)))
                    {
                        return string.Empty;
                    }

                    AppointmentRecurrenceEditor.StartDate = Start;
                    AppointmentRecurrenceEditor.EndDate = End;

                    RecurrenceRule rrule = AppointmentRecurrenceEditor.RecurrenceRule;

                    if (rrule == null)
                    {
                        return string.Empty;
                    }

                    RecurrenceRule originalRule;
                    if (RecurrenceRule.TryParse(OriginalRecurrenceRule.Value, out originalRule))
                    {
                        rrule.Exceptions = originalRule.Exceptions;
                    }

                    if (rrule.Range.RecursUntil != DateTime.MaxValue)
                    {
                        rrule.Range.RecursUntil = Owner.DisplayToUtc(rrule.Range.RecursUntil);

                        if (!AllDayEvent.Checked)
                        {
                            rrule.Range.RecursUntil = rrule.Range.RecursUntil.AddDays(1);
                        }
                    }

                    return rrule.ToString();
                }

                return string.Empty;
            }

            set
            {
                RecurrenceRule rrule;
                RecurrenceRule.TryParse(value, out rrule);

                if (rrule != null)
                {
                    if (rrule.Range.RecursUntil != DateTime.MaxValue)
                    {
                        DateTime recursUntil = Owner.UtcToDisplay(rrule.Range.RecursUntil);

                        if (!IsAllDayAppointment(Appointment))
                        {
                            recursUntil = recursUntil.AddDays(-1);
                        }

                        rrule.Range.RecursUntil = recursUntil;
                    }

                    AppointmentRecurrenceEditor.RecurrenceRule = rrule;

                    OriginalRecurrenceRule.Value = value;
                }
            }
        }

        [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
        public string Reminder
        {
            get
            {
                if (Owner.RemindersSupport && ReminderDropDown.SelectedValue != string.Empty)
                {
                    return ReminderDropDown.SelectedValue;
                }

                return string.Empty;
            }

            set
            {
                RadComboBoxItem item = ReminderDropDown.Items.FindItemByValue(value);
                if (item != null)
                {
                    item.Selected = true;
                }
            }
        }

        [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
        public string TimeZoneID
        {
            get
            {
                return TimeZonesDropDown.SelectedValue;
            }

            set
            {

                RadComboBoxItem item = TimeZonesDropDown.Items.FindItemByValue(value);
                if (item != null)
                {
                    item.Selected = true;
                }
            }
        }

       // object RecurrenceParentID;

        [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
        public int Asset_Contact_Tag_ID
        {
            get
            {
                return Convert.ToInt32(ContinentsRadComboBox.SelectedValue);
            }

            set
            {
                // Store the selected country ID until we obtain the continent ID  
                _Asset_Contact_Tag_ID = value;
            }
        }

        [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
        public int ContactID
        {
            get
            {
                return Convert.ToInt32(CountriesRadComboBox.SelectedValue);
            }

            set
            {
                // Store the selected country ID until we obtain the continent ID  
                _ContactIDofPerson = value;
            }
        }

        //values set for custom things for person and Tag combobox
        [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
        public string ContinentPersonName
        {
            get
            {
                return ContinentsRadComboBox.SelectedItem.Text.ToString();
              
            }

            set
            {
                _PersonName = value;
            }
        }

        [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
        public string CountryTagName
        {
            get
            {
                return CountriesRadComboBox.SelectedItem.Text.ToString();
            }

            set
            {
                // Store the selected country ID until we obtain the continent ID  
                _Tag = value;
            }
        }

 

 

        #endregion

        /// <summary>
        /// Page load method for loading the appointments
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            if (ContinentsRadComboBox.Items.Count == 0)
            {
               
                // Fill the continents combo  
                LoadContinents();
            }

            UpdateButton.ValidationGroup = Owner.ValidationGroup;
            UpdateButton.CommandName = Mode == AdvancedFormMode.Edit ? "Update" : "Insert";

            //create Save button event when in run time to save the Appointment
            UpdateButton.Command += new System.Web.UI.WebControls.CommandEventHandler(UpdateButton_Command);

            if (Owner.AdvancedForm.EnableTimeZonesEditing)
                PopulateTimeZonesDropDown();
            else
                TimeZonesDropDown.Visible = false;

            if (!Owner.Reminders.Enabled)
                ReminderDropDown.Visible = false;

            InitializeStrings();
            InitializeRecurrenceEditor();

            if (!FormInitialized)
            {
                UpdateResetExceptionsVisibility();
            }
        }

        /// <summary>
        /// On Pre lender method for to set localzation
        /// </summary>
        /// <param name="e"></param>
        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);
           
            if (!string.IsNullOrEmpty(_selectedCountry))
            {
                // Fill the countries combo.  
                // Note that Continent value is available in PreRender  
                LoadCountries(Continent);
                CountriesRadComboBox.SelectedValue = _selectedCountry;
            }

            if (!FormInitialized)
            {
                if (IsAllDayAppointment(Appointment))
                {
                    EndDate.SelectedDate = EndDate.SelectedDate.Value.AddDays(-1);
                }

                FormInitialized = true;
            }

            if (String.IsNullOrEmpty(Appointment.TimeZoneID))
                TimeZoneID = Owner.TimeZonesProvider.OperationTimeZone.TimeZoneId;
            else
                TimeZoneID = Appointment.TimeZoneID;

            //if (!string.IsNullOrEmpty(_PersonName) && !string.IsNullOrEmpty(_Tag))
            //{
            //    // Fill the countries combo.  
            //    // Note that Continent value is available in PreRender  
            //    //fill the Person name and Tag Name while selected it from the downdown and put it in subject
            //    Subject += "  "+_PersonName;
            //    Subject += _Tag;

               
            //}

        }

        /// <summary>
        /// Populating the AllZones
        /// </summary>
        private void PopulateTimeZonesDropDown()
        {
            TimeZonesDropDown.DataSource = Owner.TimeZonesProvider.GetAllTimeZones();
            TimeZonesDropDown.DataTextField = "DisplayName";
            TimeZonesDropDown.DataValueField = "Id";
        }

        protected void BasicControlsPanel_DataBinding(object sender, EventArgs e)
        {
            AllDayEvent.Checked = IsAllDayAppointment(Appointment);
        }

        protected void DurationValidator_OnServerValidate(object source, ServerValidateEventArgs args)
        {
            args.IsValid = (End - Start) > TimeSpan.Zero;
        }

        protected void ResetExceptions_OnClick(object sender, EventArgs e)
        {
            Owner.RemoveRecurrenceExceptions(Appointment);
            OriginalRecurrenceRule.Value = Appointment.RecurrenceRule;
            ResetExceptions.Text = Owner.Localization.AdvancedDone;
        }

        #region Private methods

        private void InitializeStrings()
        {
            SubjectValidator.ErrorMessage = Owner.Localization.AdvancedSubjectRequired;
            SubjectValidator.ValidationGroup = Owner.ValidationGroup;

            AllDayEvent.Text = Owner.Localization.AdvancedAllDayEvent;

            StartDateValidator.ErrorMessage = Owner.Localization.AdvancedStartDateRequired;
            StartDateValidator.ValidationGroup = Owner.ValidationGroup;

            StartTimeValidator.ErrorMessage = Owner.Localization.AdvancedStartTimeRequired;
            StartTimeValidator.ValidationGroup = Owner.ValidationGroup;

            EndDateValidator.ErrorMessage = Owner.Localization.AdvancedEndDateRequired;
            EndDateValidator.ValidationGroup = Owner.ValidationGroup;

            EndTimeValidator.ErrorMessage = Owner.Localization.AdvancedEndTimeRequired;
            EndTimeValidator.ValidationGroup = Owner.ValidationGroup;

            DurationValidator.ErrorMessage = Owner.Localization.AdvancedStartTimeBeforeEndTime;
            DurationValidator.ValidationGroup = Owner.ValidationGroup;

            ResetExceptions.Text = Owner.Localization.AdvancedReset;

            SharedCalendar.FastNavigationSettings.OkButtonCaption = Owner.Localization.AdvancedCalendarOK;
            SharedCalendar.FastNavigationSettings.CancelButtonCaption = Owner.Localization.AdvancedCalendarCancel;
            SharedCalendar.FastNavigationSettings.TodayButtonCaption = Owner.Localization.AdvancedCalendarToday;

        }

        private void InitializeRecurrenceEditor()
        {
            AppointmentRecurrenceEditor.SharedCalendar = SharedCalendar;
            AppointmentRecurrenceEditor.Culture = Owner.Culture;
            AppointmentRecurrenceEditor.StartDate = Appointment.Start;
            AppointmentRecurrenceEditor.EndDate = Appointment.End;
        }

        private void UpdateResetExceptionsVisibility()
        {
            // Render the reset exceptions checkbox when using web service binding
            if (string.IsNullOrEmpty(Owner.WebServiceSettings.Path))
            {
                ResetExceptions.Visible = false;
                RecurrenceRule rrule;
                if (RecurrenceRule.TryParse(Appointment.RecurrenceRule, out rrule))
                {
                    ResetExceptions.Visible = rrule.Exceptions.Count > 0;
                }
            }
        }

        private bool IsAllDayAppointment(Appointment appointment)
        {
            DateTime displayStart = Owner.UtcToDisplay(appointment.Start);
            DateTime displayEnd = Owner.UtcToDisplay(appointment.End);
            return displayStart.CompareTo(displayStart.Date) == 0 && displayEnd.CompareTo(displayEnd.Date) == 0;
        }

        #region Events

        UserInfoManupulator ui = new UserInfoManupulator();
        void UpdateButton_Command(object sender, System.Web.UI.WebControls.CommandEventArgs e)
        {

            #region Insert Command

            if (e.CommandName == "Insert")
            {
                OC_Scheduler_Appointment appointmentAdd = new OC_Scheduler_Appointment();
                // AdvancedForm o = new AdvancedForm();//for accesing the public proerties from the advanced from
                try
                {
                    appointmentAdd.Subject = Subject;// e.Appointment.Subject.ToString();
                    appointmentAdd.Start = Start;// e.Appointment.Start;
                    appointmentAdd.End = End;// e.Appointment.End;
                    appointmentAdd.Description = Description;// e.Appointment.Description;
                    appointmentAdd.RecurrenceRule = RecurrenceRuleText;// e.Appointment.RecurrenceRule.ToString();
                    appointmentAdd.TimeZone = TimeZoneID;// .Appointment.TimeZoneID;
                    appointmentAdd.Asset_Contact_Tag_ID = Asset_Contact_Tag_ID;// ContactID;// o._ContactIDofPerson;
                    appointmentAdd.Shift_ID = 1;//temporary hard coaded values here 1 or 2
                    appointmentAdd.Reminder = Reminder;// e.Appointment.Reminders.ToString();
                    appointmentAdd.Annotations = "";
                    appointmentAdd.Updated_By = ui.GetCurrentUserLoginName();
                    appointmentAdd.Update_Time = System.DateTime.UtcNow;

                    DataTable dt = null;
                    dt = appointmentAdd.getAsset_Contact_Tag_ID(Asset_Contact_Tag_ID, ContactID);

                    if (dt != null)
                    {
                        appointmentAdd.Asset_Contact_Tag_ID = Convert.ToInt32(dt.Rows[0]["Asset_Contact_Tag_ID"]);
                    }

                    dt = null;

                    dt = appointmentAdd.get_Shift_ID(appointmentAdd.Shift_ID);

                    if (dt != null)
                    {
                        appointmentAdd.Shift_ID = Convert.ToInt32(dt.Rows[0]["Shift_ID"]);
                    }

                    //if Recurrent not done then RecurrenceParentID is 0 so send  value null to the database
                    if (appointmentAdd.RecurrenceParentID == 0)
                    {
                        //Insert all values along with the recurentceParentID NULL if not recurrence done
                        //int? tempRPID = sys.null;
                        //appointmentAdd.RecurrenceParentID = tempRPID;
                        int saveOrNot = appointmentAdd.saveApointmentDataWithRecureenceParentIDNull(appointmentAdd);
                    }
                    else
                    {

                        //Insert all values along with the recurentceParentID
                        // appointmentAdd.RecurrenceParentID = (int?)RecurrenceParentID;
                        int saveOrNot = appointmentAdd.saveApointmentData(appointmentAdd);

                        //get latest insterted record
                        //SELECT ID FROM Appointments WHERE id=(SELECT max(id) FROM Appointments)

 

                    }

 

                }
                catch (Exception ex)
                {
                }

            }
            #endregion

            #region Update Command

            if (e.CommandName == "Update")
            {

                OC_Scheduler_Appointment appointmentUpdate = new OC_Scheduler_Appointment();
                try
                {
                    appointmentUpdate.Subject = Subject;
                    appointmentUpdate.Start = Start;
                    appointmentUpdate.End = End;
                    appointmentUpdate.Description = Description;
                    appointmentUpdate.RecurrenceRule = RecurrenceRuleText;
                    appointmentUpdate.TimeZone = TimeZoneID;
                    appointmentUpdate.Asset_Contact_Tag_ID = Asset_Contact_Tag_ID;
                    appointmentUpdate.Shift_ID = 1;
                    appointmentUpdate.Reminder = Reminder;
                    appointmentUpdate.Annotations = "";
                    appointmentUpdate.Updated_By = ui.GetCurrentUserLoginName();
                    appointmentUpdate.Update_Time = System.DateTime.UtcNow;

                   
                   

                    //DataTable dt = null;
                    //dt = appointmentAdd.getAsset_Contact_Tag_ID(Asset_Contact_Tag_ID, ContactID);

                    //if (dt != null)
                    //{
                    //    appointmentAdd.Asset_Contact_Tag_ID = Convert.ToInt32(dt.Rows[0]["Asset_Contact_Tag_ID"]);
                    //}

                    //dt = null;

                    //dt = appointmentAdd.get_Shift_ID(appointmentAdd.Shift_ID);

                    //if (dt != null)
                    //{
                    //    appointmentAdd.Shift_ID = Convert.ToInt32(dt.Rows[0]["Shift_ID"]);
                    //}

                    ////if Recurrent not done then RecurrenceParentID is 0 so send  value null to the database
                    //if (appointmentAdd.RecurrenceParentID == 0)
                    //{
                    //    //Insert all values along with the recurentceParentID NULL if not recurrence done
                    //    //int? tempRPID = sys.null;
                    //    //appointmentAdd.RecurrenceParentID = tempRPID;
                    //    int saveOrNot = appointmentAdd.saveApointmentDataWithRecureenceParentIDNull(appointmentAdd);
                    //}
                    //else
                    //{

                    //    //Insert all values along with the recurentceParentID
                    //    // appointmentAdd.RecurrenceParentID = (int?)RecurrenceParentID;
                    //    int saveOrNot = appointmentAdd.saveApointmentData(appointmentAdd);

                    //    //get latest insterted record
                    //    //SELECT ID FROM Appointments WHERE id=(SELECT max(id) FROM Appointments)
                    //}

 

                }
                catch (Exception ex)
                {
                }
            }
           
            #endregion
        }

        #endregion

        #endregion
    }
}

My issues are I am not able to get the public properties values from AdvancedForm.ascx to WPScedulerSharepointWebpartUserControl.ascx and Vice Versa.

 

1 Answer, 1 is accepted

Sort by
0
Plamen
Telerik team
answered on 15 May 2013, 11:12 AM
Hello,

I am attaching a sample Web Part where similar issue have been implemented with RadScheduler that is bounds to a dummy list of appointments and has custom advanced template form.

Hope this will be helpful.

Regards,
Plamen
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
Sharepoint Integration
Asked by
Nitinkumar
Top achievements
Rank 1
Answers by
Plamen
Telerik team
Share this question
or