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

Scheduler XML Provider, not working or i may be missing something

2 Answers 73 Views
Scheduler
This is a migrated thread and some comments may be shown as answers.
Tanuj
Top achievements
Rank 1
Tanuj asked on 08 Sep 2010, 10:31 PM
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.

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>

2 Answers, 1 is accepted

Sort by
0
Tanuj
Top achievements
Rank 1
answered on 10 Sep 2010, 03:58 AM
i finally got it to work, thanks.
0
jonnyO
Top achievements
Rank 1
answered on 15 Jan 2011, 03:04 PM
Same struggle - please explain your findings.
Tags
Scheduler
Asked by
Tanuj
Top achievements
Rank 1
Answers by
Tanuj
Top achievements
Rank 1
jonnyO
Top achievements
Rank 1
Share this question
or