
My co-worker and I are trying to create a test user profile to test our application and we saw a javacript error like:
Sys.InvalidOperationException: Handler must be a function
This error prevented us to retrieve our appointments on RadScheduler.
I researched the Internet and somebody suggested to remove brackets/parenthenses when we call the event on the client side. For example, before I had this on my RadScheduler:
OnClientFormCreated="OnClientFormCreated()" I changed this into: OnClientFormCreated="OnClientFormCreated"
It works. However, all my javacript codes inside this function are not working. For example, I tried to hide options of reccurences like Hourly, Monthly, Yearly, End after, Saturday and Sunday checkboxes of weekly recurrence (see my following codes). My question is which argument I should use to make these work like before:
function OnClientFormCreated(sender, eventArgs)
{
$telerik.$(
".rsRecurrenceOptionList li:first-child"
).hide();
$telerik.$(
".rsRecurrenceOptionList li:eq(1)"
).hide();
$telerik.$(
".rsRecurrenceOptionList li:eq(4)"
).hide();
$telerik.$(
'input[id=RadScheduler1_Form_WeeklyWeekDaySaturday]').attr('checked', false);
$telerik.$(
'input[id=RadScheduler1_Form_WeeklyWeekDaySunday]').attr('checked', false);
$telerik.$(
".rsAdvWeekly_WeekDays li:eq(0)"
).hide();
$telerik.$(
".rsAdvWeekly_WeekDays li:nth-child(5)"
).css(
"clear"
,
""
);
$telerik.$(
".rsAdvWeekly_WeekDays li:eq(6)"
).hide();
$telerik.$(
".rsAdvRecurrenceRangePanel .rsAdvOptionsPanel ul li:nth-child(2)"
).hide();
}
Thanks so much!
Tiffany Phan
10 Answers, 1 is accepted
Yes, you should not add brackets/parentheses to the handlers of the javascript events. I just tried the OnClientFormCreated event again and it works perfect on my side. Here's the code as follows:
ASPX:
<
telerik:RadScheduler
runat
=
"server"
ID
=
"RadScheduler1"
OnClientFormCreated
=
"OnClientFormCreated"
>
</
telerik:RadScheduler
>
JavaScript:
function
OnClientFormCreated(sender, eventArgs) {
$telerik.$(
".rsRecurrenceOptionList li:first-child"
).hide();
$telerik.$(
".rsRecurrenceOptionList li:eq(1)"
).hide();
$telerik.$(
".rsRecurrenceOptionList li:eq(4)"
).hide();
$telerik.$(
'input[id=RadScheduler1_Form_WeeklyWeekDaySaturday]'
).attr(
'checked'
,
false
);
$telerik.$(
'input[id=RadScheduler1_Form_WeeklyWeekDaySunday]'
).attr(
'checked'
,
false
);
$telerik.$(
".rsAdvWeekly_WeekDays li:eq(0)"
).hide();
$telerik.$(
".rsAdvWeekly_WeekDays li:nth-child(5)"
).css(
"clear"
,
""
);
$telerik.$(
".rsAdvWeekly_WeekDays li:eq(6)"
).hide();
$telerik.$(
".rsAdvRecurrenceRangePanel .rsAdvOptionsPanel ul li:nth-child(2)"
).hide();
}
Please make sure that the name of the event handler is the same in both the markup and the script (I've highlighted mine in yellow). Also please note that they are case-sensitive.
If you still need help - could you please send me your code so I can inspect it and help you?
Thank you!
All the best,
Veronica Milcheva
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

First, thank you for your response. That's good to know they are case-sensitive.
I forgot to tell you that I used "External Edit in RadDock" which I had Update Panel, RadDock, and RadSchedulerRecurrenceEditor by itself. I think RadSchedulerRecurrenceEditor did not work correctly eventhough I followed your direction. I am about to paste my aspx page and aspx.vb page here, so you can inspect it for me. When you run it, just simply double click on any slot of radscheduler and when the form opens, just check recurrence checkbox, and you will see. Here is the code of my aspx page:
<%@ Page Language=
"VB"
AutoEventWireup=
"false"
CodeFile=
"Default.aspx.vb"
Inherits
=
"_Default"
%>
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<html xmlns=
"http://www.w3.org/1999/xhtml"
>
<head runat=
"server"
>
<title></title>
<telerik:RadStyleSheetManager ID=
"RadStyleSheetManager1"
runat=
"server"
/>
<style type=
"text/css"
>
</style>
</head>
<body>
<form id=
"form1"
runat=
"server"
>
<asp:ScriptManager ID=
"ScriptManager1"
runat=
"server"
>
</asp:ScriptManager>
<script type=
"text/javascript"
>
//Put your JavaScript code here.
function openForm()
{
var dock = $find(
"<%= RadDock1.ClientID %>"
);
// Center the RadDock on the screen
var viewPort = $telerik.getViewPortSize();
var xPos = Math.round((viewPort.width - parseInt(dock.get_width())) / 2);
var yPos = Math.round((viewPort.height - parseInt(dock.get_height())) / 2);
$telerik.setLocation(dock.get_element(), { x: xPos, y: yPos });
dock.set_closed(false);
dock.enableModalExtender();
Sys.Application.remove_load(openForm);
}
function hideForm()
{
var dock = $find(
"<%= RadDock1.ClientID %>"
);
dock.disableModalExtender();
dock.set_closed(true);
return true;
}
function dockMoved(sender, args)
{
//
Return
RadDock to his original HTML parent so it gets updated via ajax
$get(
"<%= DockPanel.ClientID %>"
).appendChild(sender.get_element());
}
function dockClose(dock, args) {
dock.disableModalExtender();
}
function dockInitialize(dock, args) {
//telerik:
If
postback occured. Move a RadDock to the center and show the modal extender.
if (dock.get_closed() == false) {
var viewPort = $telerik.getViewPortSize();
var xPos = Math.round((viewPort.width - parseInt(dock.get_width())) / 2);
var yPos = Math.round((viewPort.height - parseInt(dock.get_height())) / 2);
$telerik.setLocation(dock.get_element(), { x: xPos, y: yPos });
dock.enableModalExtender();
}
}
function OnClientFormCreated(sender, eventArgs)
{
$telerik.$(
'input[id=RadScheduler1_Form_WeeklyWeekDaySaturday]').attr('checked', false);
$telerik.$(
'input[id=RadScheduler1_Form_WeeklyWeekDaySunday]').attr('checked', false);
$telerik.$(
".rsRecurrenceOptionList li:first-child"
).hide();
$telerik.$(
".rsRecurrenceOptionList li:eq(1)"
).hide();
$telerik.$(
".rsRecurrenceOptionList li:eq(4)"
).hide();
$telerik.$(
".rsAdvWeekly_WeekDays li:eq(0)"
).hide();
$telerik.$(
".rsAdvWeekly_WeekDays li:nth-child(5)"
).css(
"clear"
,
""
);
$telerik.$(
".rsAdvWeekly_WeekDays li:eq(6)"
).hide();
$telerik.$(
".rsAdvRecurrenceRangePanel .rsAdvOptionsPanel ul li:nth-child(2)"
).hide();
}
function OnClientRecurrenceActionDialogShowing(sender, eventArgs)
{
eventArgs.set_cancel(true);
//Edit this instance only:
//eventArgs.set_editSeries(false);
//Edit the entire series:
eventArgs.set_editSeries(true);
}
function OnClientAppointmentMoveStart(sender, e)
{
$find(
"RadAjaxManager1"
).ajaxRequest(e.get_appointment().get_id());
}
</script>
<telerik:RadAjaxManager ID=
"RadAjaxManager1"
runat=
"server"
>
</telerik:RadAjaxManager>
<asp:UpdatePanel ID=
"UpdatePanel1"
runat=
"server"
>
<ContentTemplate>
<telerik:RadScheduler ID=
"RadScheduler1"
runat=
"server"
Width=
"700px"
Height=
"630px"
StartEditingInAdvancedForm=
"False"
OnClientFormCreated=
"OnClientFormCreated"
DataEndField=
"EndDate"
DataKeyField=
"ID"
DataRecurrenceField=
"RecurrenceRule"
DataRecurrenceParentKeyField=
"RecurrenceParentID"
DataSourceID=
"ldsActivitySchedules"
DataStartField=
"StartDate"
DataSubjectField=
"Subject"
AllowDelete=
"False"
ShowAllDayRow=
"False"
OnClientRecurrenceActionDialogShowing=
"OnClientRecurrenceActionDialogShowing"
OnFormCreating=
"RadScheduler1_FormCreating"
OnClientAppointmentMoveStart=
"OnClientAppointmentMoveStart"
CustomAttributeNames=
"ActivityID,MaxClassSize"
FirstDayOfWeek=
"Monday"
LastDayOfWeek=
"Friday"
MinutesPerRow=
"15"
SelectedView=
"WeekView"
Skin=
"Office2007"
>
<TimelineView UserSelectable=
"False"
/>
<AdvancedForm Modal=
"True"
/>
</telerik:RadScheduler>
<asp:Panel runat=
"server"
ID=
"DockPanel"
Width=
"642px"
>
<telerik:RadDock runat=
"server"
ID=
"RadDock1"
Width=
"638px"
Height=
"500px"
Closed=
"True"
Style=
"z-index: 2000;"
Title=
"Edit appointment"
DefaultCommands=
"None"
OnClientDockPositionChanged=
"dockMoved"
CloseText=
""
OnClientInitialize=
"dockInitialize"
>
<Commands>
<telerik:DockCloseCommand OnClientCommand=
"dockClose"
/>
</Commands>
<ContentTemplate>
<div>
<div>
<asp:Label runat=
"server"
ID=
"StatusLabel"
></asp:Label>
</div>
<div>
<table>
<tr align=
"left"
>
<td style=
"color: Navy; font-family: 'Segoe UI', Arial, Verdana, bold; font-size: 11px;"
>
Activity Name:
</td>
</td>
</tr>
<tr>
<td style=
"color: Navy; font-family: 'Segoe UI', Arial, Verdana, bold; font-size: 11px;"
>
<telerik:RadTextBox ID=
"txtSubject"
runat=
"server"
Width=
"200px"
>
</telerik:RadTextBox>
</td>
<td style="color: Navy; font-family:
'Segoe UI', Arial, Verdana, bold; font-size: 11px;
height: 20px;">
</td>
<td style="color: Navy; font-family:
'Segoe UI', Arial, Verdana, bold; font-size: 11px;
height: 20px;">
</td>
</tr>
<tr>
<td style="color: Navy; font-family:
'Segoe UI', Arial, Verdana, bold; font-size: 11px;
height: 20px;">
Class
Start
Date
:
<br />
<telerik:RadDatePicker ID=
"StartDate"
runat=
"server"
Culture=
"English (United States)"
SharedCalendarID=
"SharedCalendar"
Width=
"100px"
>
</telerik:RadDatePicker>
<asp:RequiredFieldValidator ID=
"rfvStartDate"
runat=
"server"
ControlToValidate=
"StartDate"
Display=
"Dynamic"
ErrorMessage=
"Required field!"
Style="font-family:
'Segoe UI', Arial, Verdana;
font-size: 11px" />
</td>
<td style=
"color: Navy; font-family: 'Segoe UI', Arial, Verdana, bold; font-size: 11px;"
>
</td>
<td style="color: Navy; font-family:
'Segoe UI', Arial, Verdana, bold; font-size: 11px;
height: 20px;">
</td>
</tr>
<tr>
<td style=
"color: Navy; font-family: 'Segoe UI', Arial, Verdana, bold; font-size: 11px;"
>
Start Time:<br />
</td>
<td style="color: Navy; font-family:
'Segoe UI', Arial, Verdana, bold; font-size: 11px;
height: 20px;">
End
Time:<br />
</td>
</tr>
<tr>
<td class=
"style2"
>
<telerik:RadTimePicker ID=
"StartTime"
runat=
"server"
SharedTimeViewID=
"SharedTimeView"
Culture=
"English (United States)"
Width=
"100px"
>
</telerik:RadTimePicker>
<br />
<asp:RequiredFieldValidator ID=
"rfvStartTime"
runat=
"server"
ControlToValidate=
"StartTime"
Display=
"Dynamic"
ErrorMessage=
"Required field!"
Style="font-family:
'Segoe UI', Arial, Verdana;
font-size: 11px" />
<br />
</td>
<td style=
"height: 41px"
>
<telerik:RadTimePicker ID=
"EndTime"
runat=
"server"
SharedTimeViewID=
"SharedTimeView"
Culture=
"English (United States)"
Width=
"100px"
>
</telerik:RadTimePicker>
<br />
<asp:RequiredFieldValidator ID=
"rfvEndTime"
runat=
"server"
ControlToValidate=
"EndTime"
Display=
"Dynamic"
ErrorMessage=
"Required field!"
Style="font-family:
'Segoe UI', Arial, Verdana;
font-size: 11px" />
<br />
</td>
</tr>
<tr>
<td colspan=
"2"
>
<telerik:RadSchedulerRecurrenceEditor ID=
"RecurrenceEditor1"
runat=
"server"
Width=
"600px"
Style=
"color: Navy; font-family: 'Segoe UI', Arial, Verdana, bold; font-size: 11px"
FirstDayOfWeek=
"Monday"
>
</telerik:RadSchedulerRecurrenceEditor>
</td>
</tr>
</table>
</div>
<br />
<br />
<telerik:RadTimeView ID=
"SharedTimeView"
runat=
"server"
Height=
"200px"
Interval=
"00:15:00"
EndTime=
"19:15:00"
StartTime=
"07:00:00"
>
</telerik:RadTimeView>
<telerik:RadCalendar ID=
"SharedCalendar"
runat=
"server"
EnableMonthYearFastNavigation=
"False"
EnableMultiSelect=
"False"
UseColumnHeadersAsSelectors=
"False"
UseRowHeadersAsSelectors=
"False"
>
</telerik:RadCalendar>
</div>
</ContentTemplate>
</telerik:RadDock>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
<asp:LinqDataSource ID=
"ldsActivitySchedules"
runat=
"server"
ContextTypeName=
"MyDataClassesDataContext"
EnableInsert=
"True"
EnableUpdate=
"True"
TableName=
"ACTIVITYSCHEDULEs"
Where=
"Deleted == @Deleted"
>
<WhereParameters>
<asp:QueryStringParameter DefaultValue=
"False"
Name=
"Deleted"
QueryStringField=
"Deleted"
Type=
"Boolean"
/>
</WhereParameters>
</asp:LinqDataSource>
<telerik:RadWindowManager ID=
"RadWindowManager1"
runat=
"server"
Skin=
"Outlook"
>
</telerik:RadWindowManager>
<script type=
"text/javascript"
>
Telerik.Web.UI.RadDock.prototype.enableModalExtender = function() {
if (!this._modalExtender) {
this._modalExtender = new Telerik.Web.UI.ModalExtender(this.get_element());
}
this._modalExtender.show();
};
Telerik.Web.UI.RadDock.prototype.disableModalExtender = function() {
if (this._modalExtender) {
this._modalExtender.hide();
}
};
Telerik.Web.UI.RadDock.prototype.dispose = function() {
if (this._modalExtender) {
this._modalExtender.dispose();
this._modalExtender = null;
}
Telerik.Web.UI.RadDock.callBaseMethod(this,
'dispose');
};
</script>
</form>
</body>
</html>
And this is my aspx.vb page:
Imports
System
Imports
Telerik.Web.UI
Imports
System.Web.UI
Imports
System.Data.Linq
Imports
System.Convert
Partial
Class
_Default
Inherits
System.Web.UI.Page
Private
_dataContext
As
MyDataClassesDataContext
#Region " Defines Data Context "
''' <summary>
''' Defines Data Context for Schedule Database
''' </summary>
''' Tiffany created 5/27/2011
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Protected
ReadOnly
Property
DbContext()
As
MyDataClassesDataContext
Get
If
_dataContext
Is
Nothing
Then
_dataContext =
New
MyDataClassesDataContext()
End
If
Return
_dataContext
End
Get
End
Property
Public
Overloads
Overrides
Sub
Dispose()
If
_dataContext IsNot
Nothing
Then
_dataContext.Dispose()
End
If
MyBase
.Dispose()
End
Sub
#End Region
#Region " Get appointment ID as an object "
''' <summary>
''' Get appointment ID
''' </summary>
''' Tiffany created 5/27/2011
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Protected
Property
EditedAppointmentID()
As
Object
Get
Return
ViewState(
"EditedAppointmentID"
)
End
Get
Set
(
ByVal
value
As
Object
)
ViewState(
"EditedAppointmentID"
) = value
End
Set
End
Property
#End Region
#Region "RadScheduler1_FormCreating"
''' <summary>
''' Opens radscheduler
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Protected
Sub
RadScheduler1_FormCreating(
ByVal
sender
As
Object
,
ByVal
e
As
Telerik.Web.UI.SchedulerFormCreatingEventArgs)
Handles
RadScheduler1.FormCreating
If
e.Mode = SchedulerFormMode.Insert
OrElse
e.Mode = SchedulerFormMode.Edit
Then
EditedAppointmentID = e.Appointment.ID
e.Cancel =
True
RadScheduler1.Enabled =
False
ScriptManager.RegisterStartupScript(Page, [
GetType
](),
"formScript"
,
"Sys.Application.add_load(openForm);"
,
True
)
PopulateEditForm(e.Appointment)
End
If
End
Sub
#End Region
#Region " PopulateEditForm "
''' <summary>
''' Displays details of an appointment
''' </summary>
''' Tiffany created 5/27/2011
''' <param name="editedAppointment"></param>
''' <remarks></remarks>
Protected
Sub
PopulateEditForm(
ByVal
editedAppointment
As
Appointment)
Dim
appointmentToEdit
As
Appointment = RadScheduler1.PrepareToEdit(editedAppointment,
True
)
Dim
storedRule
As
String
=
Nothing
If
appointmentToEdit.ID
Is
Nothing
Then
StartDate.SelectedDate = editedAppointment.Start.ToShortDateString
StartTime.SelectedDate = editedAppointment.Start
EndTime.SelectedDate = editedAppointment.
End
'**** Did not refresh recurrence editor and this is a bug of telerik even though I cleared out the
'recurrence editor; they said they are working on this
RecurrenceEditor1.RecurrenceRule =
Nothing
RecurrenceEditor1.RecurrenceRuleText = storedRule
RecurrenceEditor1.RecurrenceRuleText = (System.Convert.DBNull).ToString
'*****End clearing the recurrence editor
Else
ViewState(
"ActivityID"
) = appointmentToEdit.Attributes(
"ActivityID"
)
StartDate.SelectedDate = RadScheduler1.UtcToDisplay(appointmentToEdit.Start)
StartTime.SelectedDate = RadScheduler1.UtcToDisplay(appointmentToEdit.Start)
EndTime.SelectedDate = RadScheduler1.UtcToDisplay(appointmentToEdit.
End
)
storedRule = appointmentToEdit.RecurrenceRule
RecurrenceEditor1.RecurrenceRuleText = appointmentToEdit.RecurrenceRule
Dim
actDropDown
As
Resource = appointmentToEdit.Resources.GetResourceByType(
"Activity"
)
End
If
End
Sub
#End Region
#Region "Page_LoadComplete"
''' <summary>
''' Page load complete
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Protected
Sub
Page_LoadComplete(
ByVal
sender
As
Object
,
ByVal
e
As
System.EventArgs)
Handles
Me
.LoadComplete
If
Not
IsPostBack
Then
'do something
Else
RadScheduler1.Enabled =
True
End
If
End
Sub
#End Region
End
Class
Please help!
Thanks a lot.
Tiffany Phan
Thank you for the detailed information as well as the code provided. Please note that when you use external control to replace the Advanced Form - the OnClientFormCreated client-side event is not fired. That's why the settings of the recurrence editor are not applied. As an alternative you can apply the code in the pageLoad() function. Also please note that the id-s of the checkboxes are changed. They must contain the ID of the RadDock. Here's an example:
function
pageLoad() {
$telerik.$(
'input[id=RadDock1_C_RadSchedulerRecurrenceEditor1_WeeklyWeekDaySaturday]'
).attr(
'checked'
,
false
);
$telerik.$(
'input[id=RadDock1_C_RadSchedulerRecurrenceEditor1_WeeklyWeekDaySunday]'
).attr(
'checked'
,
false
);
$telerik.$(
".rsRecurrenceOptionList li:first-child"
).hide();
}
Hope this helps.
Regards,
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

Thank you so much for your help.
I'm curious about the ID(s) of checkboxes in your example. What does C stand for (in the following line) after the ID of the RadDock?
$telerik.$(
'input[id=RadDock1_C_RadSchedulerRecurrenceEditor1_WeeklyWeekDaySaturday]').attr('checked', false);
Again, thank you!
Tiffany Phan
Unfortunately I am not sure what stays behind the "C" in the id-s of the checkboxes. Maybe "C" stands for Custom as you are using a custom wrapper instead of the standart advanced form. Anyway, you only need to replace the "RadDock1" with the ID of your RadDock and everything will work OK.
Greetings,
Veronica Milcheva
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

I am trying to hide the recurrence option that reads "Recur every _ week(s) on" that is associated with the "Weekly" recurrence radio button but I can not get the code just right, can you please tell me how I can do this? Also, I do want to keep all the week days and the default value of recurring every 1 week. The code I've tried so far is below:
$telerik.$(
'input[id=ctl00_SiteContentPlaceHolder_RadSchedulerRecurrenceEditor1_RecurrencePatternWeeklyPanel]'
- and -
$telerik.$(
".rsAdvRecurrencePatterns .rsAdvOptionsPanel .rsAdvWeekly rsAdvPatternPanel"
Neither of the above lines work and I feel like I'm just dancing around the problem.
Thank you in advance for any help or guidance you can provide.
Cheri
Pease try the following jQuery code:
function
pageLoad() {
$telerik.$(
".rsAdvWeekly div:first"
).hide();
}
Hope this helps.
Kind regards,
Veronica Milcheva
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

Thank you so much! That was exactly what I was looking for.
Cheri

I would like to know how to access the recurrence editor controls server side. I am using the advanced user control also and the form is initially created on the client (OnClientFormCreated ="schedulerFormCreated") . I am unable to access the Recurrence Editor or any of its controls. Any help would be appreciated.
Protected Sub RadScheduler1_FormCreated(ByVal sender As Object, ByVal e As SchedulerFormCreatedEventArgs) Handles RadScheduler1.FormCreated
Dim scheduler As RadScheduler = DirectCast(sender, RadScheduler)
'attachToResourceDdlEvent()
If e.Container.Mode = SchedulerFormMode.AdvancedInsert Then
Dim advForm As Control = DirectCast(RadScheduler1.FindControl("Form"), Control)
Dim advUserControl As Control = DirectCast(advForm.FindControl("AdvancedInsertForm1"), Control)
Dim advPanel As Control = DirectCast(advUserControl.FindControl("AdvancedEditOptionsPanel"), Control)
Dim basicControlsPanel As Control = DirectCast(advPanel.FindControl("BasicControlsPanel"), Control)
'Dim advControlsPanel As Control = DirectCast(advPanel.FindControl("AdvancedControlsPanel"), Control)
Dim recurrenceEditor As RadSchedulerRecurrenceEditor = DirectCast(advPanel.FindControl("AppointmentRecurrenceEditor"), RadSchedulerRecurrenceEditor)
Dim PriorityDdl As RadComboBox = DirectCast(advPanel.FindControl("PriorityCombo"), RadComboBox)
If PriorityDdl IsNot Nothing Then
PriorityDdl.AutoPostBack = True
AddHandler PriorityDdl.SelectedIndexChanged, AddressOf priorityDdl_SelectedIndexChanged
End If
If hidShowRecurrence.Value = "TRUE" Then
If recurrenceEditor IsNot Nothing Then
''Checks the recurrence checkbox so that the recurrence editor is expanded.
'Dim recurrenceCheckbox As CheckBox = DirectCast(advPanel.FindControl("RecurrentAppointment"), CheckBox)
'recurrenceCheckbox.Checked = True
''Disable Sunday for the weekly recurrence rule
Dim sundayCheckbox As CheckBox = DirectCast(recurrenceEditor.FindControl("WeeklyWeekDaySunday"), CheckBox)
sundayCheckbox.Enabled = False
''Disable Saturday for the weekly recurrence rule
'Dim saturdayCheckbox As CheckBox = DirectCast(advPanel.FindControl("WeeklyWeekDaySaturday"), CheckBox)
'saturdayCheckbox.Enabled = False
End If
End If
''CHANGE THE START TIME PICKER OPTIONS
Dim startTime As RadTimePicker = TryCast(basicControlsPanel.FindControl("StartTime"), RadTimePicker)
''CHANGE THE END TIME PICKER OPTIONS
Dim endTime As RadTimePicker = TryCast(basicControlsPanel.FindControl("EndTime"), RadTimePicker)
startTime.SelectedDate = RoundToNearestHour(Date.Now)
endTime.SelectedDate = startTime.SelectedDate.Value.AddHours(1)
'UPDATE THE END DATE PICKER WHEN THE START DATE PICKER IS CHANGED
Dim startDate As RadDatePicker = TryCast(basicControlsPanel.FindControl("StartDate"), RadDatePicker)
If Not IsNothing(startDate) Then
startDate.ClientEvents.OnDateSelected = "changeEndDate"
End If
'UPDATE THE END TIME PICKER WHEN THE START TIME PICKER IS CHANGED
If Not IsNothing(startTime) Then
startTime.ClientEvents.OnDateSelected = "changeEndTime"
End If
End If
End Sub

After much struggle with using the Advanced Form I decided to use an external page that I could completely customize to create/edit appointments. On the Scheduler page I used the 'OnClientAppointmentEditing="AppointmentEditing" ' and ' OnClientAppointmentInserting="AppointmentInserting" ' in the RadScheduler properties. If you decide to use this method you'll need to need to add the following javascript to the client:
function AppointmentInserting(sender, eventArgs)
{
// Open up a blank edit form.
window.radopen("EditActivity.aspx?apptToEdit=" + 0, "EditForm");
eventArgs.set_cancel(
true);
}
function AppointmentEditing(sender, eventArgs)
{
var apt = eventArgs.get_appointment();
if (apt._subject=="Leave Of Absence")
{
window.radopen("EditActivity.aspx?apptToEdit=" + apt._id, "EditForm");
}
eventArgs.set_cancel(true);
}
function refreshSched(arg)
{
if (!arg)
{
$find(
"<%= RadAjaxManager1.ClientID %>").ajaxRequest("RebindScheduler");
}
}
<asp:Content>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="RadAjaxManager1_AjaxRequest"/>
<telerik:RadWindowManager ID="RadWindowManager1" runat="server" Skin="Outlook" OnClientClose="refreshScheduler">
<Windows>
<telerik:RadWindow ID="EditForm" runat="server" Behaviors="Close" Modal="true" InitialBehavior="None" OnClientClose="refreshScheduler" Style="display: none;" Title="Manage Individual Activites and Appointments" Skin="Office2007" height="600px" Width="550" ShowContentDuringLoad="false">
</telerik:RadWindow>
</Windows>
</telerik:RadWindowManager>
</asp:Content>
RadScheduler page server side:
#Region " RadAjaxManager1_AjaxRequest"
' Rebind the scheduler
Protected Sub RadAjaxManager1_AjaxRequest(ByVal sender As Object, ByVal e As Telerik.Web.UI.AjaxRequestEventArgs) Handles RadAjaxManager1.AjaxRequest
If e.Argument = "RebindScheduler" Then
RadScheduler1.Rebind()
End If
End Sub
#End Region
Now as for the EditActivity.aspx page I was able to build out a page (that does not inherit from a Master Page) that has all the fields I want to populate and collect along with a recurrence editor. In the server side code I found, then enabled/disabled the week days using the following code:
Protected Sub EnableFields(ByVal enableFields As Boolean)
Dim chkSunday As CheckBox = RadSchedulerRecurrenceEditor1.FindControl("WeeklyWeekDaySunday")
Dim chkMonday As CheckBox = RadSchedulerRecurrenceEditor1.FindControl("WeeklyWeekDayMonday")
Dim chkTuesday As CheckBox = RadSchedulerRecurrenceEditor1.FindControl("WeeklyWeekDayTuesday")
Dim chkWednesday As CheckBox = RadSchedulerRecurrenceEditor1.FindControl("WeeklyWeekDayWednesday")
Dim chkThursday As CheckBox = RadSchedulerRecurrenceEditor1.FindControl("WeeklyWeekDayThursday")
Dim chkFriday As CheckBox = RadSchedulerRecurrenceEditor1.FindControl("WeeklyWeekDayFriday")
Dim chkSaturday As CheckBox = RadSchedulerRecurrenceEditor1.FindControl("WeeklyWeekDaySaturday")
' Sets the check mark value for the week day check boxes
chkSunday.Enabled = enableFields
chkMonday.Enabled = enableFields
chkTuesday.Enabled = enableFields
chkWednesday.Enabled = enableFields
chkThursday.Enabled = enableFields
chkFriday.Enabled = enableFields
chkSaturday.Enabled = enableFields
End Sub
' Change the recurrence start/end times
Dim xStartTime As String = Convert.ToDateTime(StartTime.SelectedDate).TimeOfDay.ToString()
Dim xEndTime As String = FormatDateTime(EndTime.SelectedDate.Value.TimeOfDay.ToString, DateFormat.LongTime)
Dim startDateTime = FormatDateTime(Ind_StartDate.SelectedDate + " " + xStartTime, DateFormat.GeneralDate)
Dim endDateTime = FormatDateTime(Ind_StartDate.SelectedDate + " " + xEndTime, DateFormat.GeneralDate)
Dim start As DateTime = startDateTime
Dim [end] As DateTime = endDateTime
RadSchedulerRecurrenceEditor1.StartDate = startDateTime
RadSchedulerRecurrenceEditor1.EndDate = endDateTime
' Note: If you find that you have to manually manipulate the recurrance rule that can be done by converting the rule to text then parsing through it, but doing so is a real pain in the butt! Unfortunately, I was left with no other option due to way in which I need to use the scheduler.
Hope this helps,
Cheri