Hi,
i am looking to create something like this demo
http://demos.telerik.com/aspnet-ajax/scheduler/examples/outlook2007/defaultcs.aspx
i want to use a simple xml file which is located in my App_Data folder, I simply copied all the relevant code from this demo and created a user control for it, All the UI is getting displayed correctly, but the data from the XML file is'nt, please advice what i may be missing?, i tried to debug and i am seeing that the Provider Object is getting populated and is not null, i can also see the innerxml property with the xml.
ASCX file
ASCX.cs file
test.xml
i am looking to create something like this demo
http://demos.telerik.com/aspnet-ajax/scheduler/examples/outlook2007/defaultcs.aspx
i want to use a simple xml file which is located in my App_Data folder, I simply copied all the relevant code from this demo and created a user control for it, All the UI is getting displayed correctly, but the data from the XML file is'nt, please advice what i may be missing?, i tried to debug and i am seeing that the Provider Object is getting populated and is not null, i can also see the innerxml property with the xml.
provider =
new XmlSchedulerProvider(Server.MapPath("~/App_Data/test.xml"), false);
ASCX file
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Calendar.ascx.cs" Inherits="CMSWebParts_Grafica_Calendar" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<
style
type
=
"text/css"
>
.example-panel
{
width: 743px;
height:560px;
padding-top: 34px;
padding-left: 7px;
}
.example-panel .title
{
color:#000;
font: 14px 'Segoe UI', Arial, sans-serif;
position:absolute;
top: 5px;
padding-left: 5px;
}
.RadSplitter
{
border: none !important;
margin: 0 !important;
}
.RadPanelBar .rootGroup
{
border-left: none;
border-right: none;
}
.calendar-container
{
width:220px;
margin: 7px auto;
}
#RadScheduler1Panel
{
width: 100%;
overflow: hidden;
}
div.RadScheduler
{
width: 100%;
}
/* Styles for the appointment Subject */
.RadScheduler .rsAptSubject
{
text-align: left;
margin: 0 0 3px;
font-size: 11px;
font-weight: bold;
color: #369;
height: 17px;
border-bottom: 1px solid #8bf;
width: 100%;
}
/* Remove the Subject underline for all-day appointments */
.RadScheduler .rsAllDayRow .rsAptSubject
{
border-bottom: none;
}
</
style
>
<
script
type
=
"text/javascript"
>
/* Firefox resize scrollable content */
function hideScrollableArea(sender, eventArgs) {
if ($telerik.isFirefox)
$telerik.$('.rsContentScrollArea').css('overflow', 'hidden');
}
function showScrollableArea(sender, eventArgs) {
if ($telerik.isFirefox)
$telerik.$('.rsContentScrollArea').css('overflow', 'auto');
}
</
script
>
<
telerik:RadAjaxManager
runat
=
"Server"
ID
=
"RadAjaxManager1"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadCalendar1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadCalendar2"
/>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadScheduler1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadCalendar2"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadCalendar1"
/>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadScheduler1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"chkDevelopment"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadScheduler1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"chkMarketing"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadScheduler1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"chkQ1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadScheduler1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"chkQ2"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadScheduler1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadScheduler1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadScheduler1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadAjaxLoadingPanel
ID
=
"RadAjaxLoadingPanel1"
runat
=
"server"
Skin
=
"WebBlue"
/>
<
div
class
=
"example-panel exampleContainer"
>
<
div
class
=
"title"
>My Schedule</
div
>
<
telerik:RadSplitter
runat
=
"server"
ID
=
"RadSplitter1"
PanesBorderSize
=
"0"
Width
=
"720px"
Height
=
"100%"
Skin
=
"WebBlue"
>
<
telerik:RadPane
runat
=
"Server"
ID
=
"leftPane"
Width
=
"240px"
MinWidth
=
"240"
MaxWidth
=
"300"
Height
=
"100%"
Scrolling
=
"None"
OnClientResizing
=
"hideScrollableArea"
OnClientResized
=
"showScrollableArea"
OnClientExpanding
=
"hideScrollableArea"
OnClientExpanded
=
"showScrollableArea"
OnClientCollapsing
=
"hideScrollableArea"
OnClientCollapsed
=
"showScrollableArea"
>
<
div
class
=
"calendar-container"
>
<
telerik:RadCalendar
runat
=
"server"
ID
=
"RadCalendar1"
Skin
=
"WebBlue"
AutoPostBack
=
"true"
EnableMultiSelect
=
"false"
DayNameFormat
=
"FirstTwoLetters"
EnableNavigation
=
"true"
EnableMonthYearFastNavigation
=
"false"
OnSelectionChanged
=
"RadCalendar1_SelectionChanged"
OnDefaultViewChanged
=
"RadCalendar1_DefaultViewChanged"
>
</
telerik:RadCalendar
>
<
telerik:RadCalendar
runat
=
"server"
ID
=
"RadCalendar2"
Skin
=
"WebBlue"
AutoPostBack
=
"true"
EnableMultiSelect
=
"false"
DayNameFormat
=
"FirstTwoLetters"
EnableNavigation
=
"false"
EnableMonthYearFastNavigation
=
"false"
OnSelectionChanged
=
"RadCalendar2_SelectionChanged"
>
</
telerik:RadCalendar
>
</
div
>
<
telerik:RadPanelBar
runat
=
"server"
Skin
=
"WebBlue"
ID
=
"PanelBar"
Width
=
"100%"
>
<
Items
>
<
telerik:RadPanelItem
runat
=
"server"
Text
=
"My Team Calendars"
Expanded
=
"true"
>
<
Items
>
<
telerik:RadPanelItem
runat
=
"server"
>
<
ItemTemplate
>
<
div
class
=
"rpCheckBoxPanel"
>
<
div
>
<
asp:CheckBox
ID
=
"chkDevelopment"
runat
=
"server"
Text
=
"Development"
Checked
=
"true"
AutoPostBack
=
"true"
OnCheckedChanged
=
"CheckBoxes_CheckedChanged"
/>
</
div
>
<
div
>
<
asp:CheckBox
ID
=
"chkMarketing"
runat
=
"server"
Text
=
"Marketing"
Checked
=
"true"
AutoPostBack
=
"true"
OnCheckedChanged
=
"CheckBoxes_CheckedChanged"
/>
</
div
>
</
div
>
</
ItemTemplate
>
</
telerik:RadPanelItem
>
</
Items
>
</
telerik:RadPanelItem
>
<
telerik:RadPanelItem
runat
=
"server"
Text
=
"My Calendar"
Expanded
=
"true"
>
<
Items
>
<
telerik:RadPanelItem
runat
=
"server"
>
<
ItemTemplate
>
<
div
class
=
"rpCheckBoxPanel"
>
<
div
>
<
asp:CheckBox
ID
=
"chkQ1"
runat
=
"server"
Text
=
"Personal"
Checked
=
"true"
AutoPostBack
=
"true"
OnCheckedChanged
=
"CheckBoxes_CheckedChanged"
/>
</
div
>
<
div
>
<
asp:CheckBox
ID
=
"chkQ2"
runat
=
"server"
Text
=
"Work"
Checked
=
"true"
AutoPostBack
=
"true"
OnCheckedChanged
=
"CheckBoxes_CheckedChanged"
/>
</
div
>
</
div
>
</
ItemTemplate
>
</
telerik:RadPanelItem
>
</
Items
>
</
telerik:RadPanelItem
>
</
Items
>
</
telerik:RadPanelBar
>
</
telerik:RadPane
>
<
telerik:RadSplitBar
runat
=
"server"
ID
=
"RadSplitBar2"
CollapseMode
=
"Forward"
/>
<
telerik:RadPane
runat
=
"Server"
ID
=
"rightPane"
Scrolling
=
"None"
Width
=
"470px"
Height
=
"100%"
>
<
telerik:RadScheduler
runat
=
"server"
ID
=
"RadScheduler1"
Skin
=
"WebBlue"
ShowFooter
=
"True"
Height
=
"100%"
DayStartTime
=
"08:00:00"
DayEndTime
=
"22:00:00"
FirstDayOfWeek
=
"Monday"
LastDayOfWeek
=
"Friday"
EnableDescriptionField
=
"true"
AppointmentStyleMode
=
"Default"
DataKeyField
=
"ID"
DataSubjectField
=
"Subject"
DataStartField
=
"Start"
DataEndField
=
"End"
OnNavigationComplete
=
"RadScheduler1_NavigationComplete"
OnAppointmentDataBound
=
"RadScheduler1_AppointmentDataBound"
OnAppointmentDelete
=
"RadScheduler1_AppointmentDelete"
OnAppointmentUpdate
=
"RadScheduler1_AppointmentUpdate"
OnAppointmentInsert
=
"RadScheduler1_AppointmentInsert"
>
<
AdvancedForm
Modal
=
"true"
/>
<
TimelineView
UserSelectable
=
"false"
/>
<
ResourceStyles
>
<%--AppointmentStyleMode must be explicitly set to Default (see above) otherwise setting BackColor/BorderColor
will switch the appointments to Simple rendering (no rounded corners and gradients)--%>
<
telerik:ResourceStyleMapping
Type
=
"Calendar"
Text
=
"Development"
/>
<
telerik:ResourceStyleMapping
Type
=
"Calendar"
Text
=
"Marketing"
ApplyCssClass
=
"rsCategoryRed"
/>
<
telerik:ResourceStyleMapping
Type
=
"Calendar"
Text
=
"Work"
ApplyCssClass
=
"rsCategoryOrange"
/>
</
ResourceStyles
>
<
AppointmentTemplate
>
<
div
class
=
"rsAptSubject"
>
<%# Eval("Subject") %>
</
div
>
<%# Eval("Description") %>
</
AppointmentTemplate
>
<
TimeSlotContextMenuSettings
EnableDefault
=
"true"
/>
<
AppointmentContextMenuSettings
EnableDefault
=
"true"
/>
</
telerik:RadScheduler
>
</
telerik:RadPane
>
</
telerik:RadSplitter
>
</
div
>
ASCX.cs file
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using Telerik.Web.UI.Calendar;
using System.Collections.Generic;
public partial class CMSWebParts_Grafica_Calendar : System.Web.UI.UserControl
{
private Dictionary<
int
, string> checkBoxIDs;
XmlSchedulerProvider Provider
{
get
{
XmlSchedulerProvider provider;
provider = new XmlSchedulerProvider(Server.MapPath("~/App_Data/test.xml"), false);
return provider;
}
}
protected void Page_Init(object sender, EventArgs e)
{
RadScheduler1.Provider = Provider;
/*
RadScheduler1.DataStartField = "Start";
RadScheduler1.DataEndField = "End";
RadScheduler1.DataSubjectField = "Subject";
RadScheduler1.DataKeyField = "ID";
*/
}
private void Page_Load(object sender, EventArgs e)
{
checkBoxIDs = new Dictionary<
int
, string>();
checkBoxIDs.Add(1, "chkDevelopment");
checkBoxIDs.Add(2, "chkMarketing");
checkBoxIDs.Add(3, "chkQ1");
checkBoxIDs.Add(4, "chkQ2");
if (!IsPostBack)
{
RadCalendar1.SelectedDate = RadScheduler1.SelectedDate;
SyncCalendars();
}
}
protected void RadScheduler1_NavigationComplete(object sender, SchedulerNavigationCompleteEventArgs e)
{
RadCalendar1.FocusedDate = RadScheduler1.SelectedDate;
SyncCalendars();
}
protected void RadCalendar1_DefaultViewChanged(object sender, DefaultViewChangedEventArgs e)
{
SyncCalendars();
}
private void SyncCalendars()
{
RadCalendar2.FocusedDate = RadCalendar1.FocusedDate.AddMonths(1);
}
protected void RadCalendar1_SelectionChanged(object sender, SelectedDatesEventArgs e)
{
if (RadCalendar1.SelectedDates.Count > 0)
{
RadScheduler1.SelectedDate = RadCalendar1.SelectedDate;
RadCalendar2.SelectedDate = RadCalendar1.SelectedDate;
}
}
protected void RadCalendar2_SelectionChanged(object sender, SelectedDatesEventArgs e)
{
if (RadCalendar2.SelectedDates.Count > 0)
{
RadScheduler1.SelectedDate = RadCalendar2.SelectedDate;
RadCalendar1.SelectedDate = RadCalendar2.SelectedDate;
}
}
protected void RadScheduler1_AppointmentDataBound(object sender, SchedulerEventArgs e)
{
RadCalendarDay radCalendarDay = new RadCalendarDay(RadCalendar1);
radCalendarDay.Date = e.Appointment.Start;
radCalendarDay.ItemStyle.CssClass = "DayWithAppointments";
RadCalendar1.SpecialDays.Add(radCalendarDay);
RadCalendar2.SpecialDays.Add(radCalendarDay);
e.Appointment.Visible = false;
foreach (int key in checkBoxIDs.Keys)
{
CheckBox chkBox = PanelBar.Items[0].Items[0].FindControl(checkBoxIDs[key]) as CheckBox;
if (chkBox == null)
chkBox = PanelBar.Items[1].Items[0].FindControl(checkBoxIDs[key]) as CheckBox;
if (chkBox.Checked)
{
Resource userRes = e.Appointment.Resources.GetResource("Calendar", key.ToString());
if (userRes != null)
{
e.Appointment.Visible = true;
}
}
}
}
protected void RadScheduler1_AppointmentDelete(object sender, SchedulerCancelEventArgs e)
{
RadCalendar1.SpecialDays.Clear();
RadCalendar2.SpecialDays.Clear();
}
protected void RadScheduler1_AppointmentUpdate(object sender, AppointmentUpdateEventArgs e)
{
RadCalendar1.SpecialDays.Clear();
RadCalendar2.SpecialDays.Clear();
}
protected void RadScheduler1_AppointmentInsert(object sender, SchedulerCancelEventArgs e)
{
if (e.Appointment.Resources.Count < 1)
e.Appointment.Resources.Add(RadScheduler1.Resources.GetResource("Calendar", "1"));
}
protected void CheckBoxes_CheckedChanged(object sender, EventArgs e)
{
RadScheduler1.Rebind();
}
}
test.xml
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
Appointments
>
<
NextID
>3</
NextID
>
<
Resources
>
<
Room
>
<
Key
>1</
Key
>
<
Text
>Meeting room 101</
Text
>
</
Room
>
<
Room
>
<
Key
>2</
Key
>
<
Text
>Meeting room 201</
Text
>
</
Room
>
<
User
>
<
Key
>1</
Key
>
<
Text
>Alex</
Text
>
</
User
>
<
User
>
<
Key
>2</
Key
>
<
Text
>Bob</
Text
>
</
User
>
<
User
>
<
Key
>3</
Key
>
<
Text
>Charlie</
Text
>
</
User
>
</
Resources
>
<
Appointment
>
<
ID
>1</
ID
>
<
Subject
>Technical meeting</
Subject
>
<
Start
>2010-09-30T06:00Z</
Start
>
<
End
>2010-09-30T07:00Z</
End
>
<
RecurrenceRule
>
<![CDATA[
DTSTART:20100930T060000Z
DTEND:20100930T070000Z
RRULE:FREQ=DAILY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR;
]]>
</
RecurrenceRule
>
<
Resources
>
<
Room
Key
=
"1"
/>
<
User
Key
=
"1"
/>
</
Resources
>
<
Attribute
Key
=
"CustomAttribute"
Value
=
"1"
/>
</
Appointment
>
<
Appointment
>
<
ID
>2</
ID
>
<
Subject
>Lunch</
Subject
>
<
Start
>2010-09-09T09:00Z</
Start
>
<
End
>2010-09-09T10:00Z</
End
>
<
Resources
>
<
User
Key
=
"1"
/>
</
Resources
>
</
Appointment
>
</
Appointments
>