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

RADScheduler in SharePoint list

1 Answer 168 Views
Scheduler
This is a migrated thread and some comments may be shown as answers.
Aroh Shukla
Top achievements
Rank 1
Aroh Shukla asked on 21 Nov 2008, 07:54 PM
Hi Admin,

I am using RADScheduler in a SharePoint list as datasource (members in SharePoint group) and very similar to example in http://demos.telerik.com/ASPNET/Prometheus/Scheduler/Examples/Resources/DefaultCS.aspx

I used web part (NOT user control or SmartPart, but VS.NET 2008 IDE) and this the code:

 namespace RADSchedulerWP    
2 {    
3     [Guid("ebb5c169-13bf-488e-a8dc-299f39eabb9b")]    
4     public class RADSchedulerWP : System.Web.UI.WebControls.WebParts.WebPart    
5     {    
6         public RADSchedulerWP()    
7         {    
8         }    
9    
10         private DropDownList allUsers;    
11         private RadScheduler theScheduler = null;    
12    
13         protected override void OnInit(EventArgs e)    
14         {    
15             base.OnInit(e);    
16    
17             // Check for all USERS (Memeber)the in SharePoint Grp.    
18             SPWeb web = SPControl.GetContextWeb(Context);    
19             allUsers = new DropDownList();    
20    
21             allUsers.Items.Insert(0, new ListItem("Please select...""0"));    
22    
23             foreach (SPUser user in web.AllUsers)    
24             {    
25                 allUsers.Items.Add(user.Name);    
26             }    
27    
28             this.Controls.Add(this.allUsers);    
29    
30             // Create the table that will hold the toolbar and the calendar    
31             HtmlTable theMainTable = new HtmlTable();    
32             theMainTable.Width = "100%";    
33             theMainTable.CellPadding = 0;    
34             theMainTable.CellSpacing = 0;    
35             theMainTable.Border = 0;    
36             this.Controls.Add(theMainTable);    
37    
38             // Create the row and the cell for the calendar    
39             HtmlTableRow calendarRow = new HtmlTableRow();    
40             theMainTable.Rows.Add(calendarRow);    
41             HtmlTableCell calendarCell = new HtmlTableCell();    
42             calendarRow.Cells.Add(calendarCell);    
43    
44             CheckScriptManager();    
45    
46             theScheduler = new RadScheduler();    
47             theScheduler.Skin = "Office2007";    
48             // Disable the timeline view    
49             theScheduler.TimelineView.UserSelectable = false;    
50             theScheduler.Width = new Unit(800, UnitType.Pixel);    
51             theScheduler.Height = new Unit(600, UnitType.Pixel);    
52             theScheduler.OverflowBehavior = OverflowBehavior.Expand;    
53             theScheduler.Provider = new ListSchedulerProvider();    
54             theScheduler.SelectedView = SchedulerViewType.WeekView;    
55    
56             // The following line plus the CSS classes added in the Default.aspx    
57             // caused the appointments to cross the boundary of the month cell    
58             theScheduler.MonthView.VisibleAppointmentsPerDay = 5;    
59             //theScheduler.ShowAdvancedEditForm = true;    
60    
61             this.Controls.Add(theScheduler);    
62       
63    
64         }    
65    
66         private ScriptManager CheckScriptManager()    
67         {    
68             ScriptManager sm = ScriptManager.GetCurrent(Page);    
69             if (sm == null)    
70             {    
71                 if (Page.Form != null)    
72                 {    
73                     sm = new ScriptManager();    
74                     sm.ID = Page.Form.ID + "_ScriptManager";    
75                     Page.Form.Controls.Add(sm);    
76                 }    
77             }    
78    
79             return sm;    
80         }    
81    
82         protected override void CreateChildControls()    
83         {    
84             base.CreateChildControls();    
85    
86             // TODO: add custom rendering code here.    
87             Label label = new Label();    
88             label.Text = "Demo RADScheduler!";    
89             this.Controls.Add(label);    
90    
91         }    
92    
93         public class ListSchedulerProvider : SchedulerProviderBase    
94         {    
95             public override void Delete(RadScheduler owner, Appointment appointmentToDelete)    
96             {    
97    
98             }    
99    
100             public override System.Collections.Generic.IEnumerable<Appointment> GetAppointments(RadScheduler owner)    
101             {    
102                 List<Appointment> appointmentsList = new List<Appointment>();    
103    
104                 Appointment newAppt = new Appointment();    
105                 newAppt.Start = new DateTime(2008, 7, 14, 0, 0, 0);    
106                 newAppt.End = newAppt.Start.AddDays(1);    
107                 newAppt.ID = Guid.NewGuid();    
108                 newAppt.Subject = "All Day 1";    
109                 newAppt.ToolTip = "All Day 1";    
110                 newAppt.RecurrenceState = RecurrenceState.NotRecurring;    
111                 appointmentsList.Add(newAppt);    
112    
113                 newAppt = new Appointment();    
114                 newAppt.Start = new DateTime(2008, 7, 14, 0, 0, 0);    
115                 newAppt.End = newAppt.Start.AddDays(1);    
116                 newAppt.ID = Guid.NewGuid();    
117                 newAppt.Subject = "All Day 2";    
118                 newAppt.ToolTip = "All Day 2";    
119                 newAppt.RecurrenceState = RecurrenceState.NotRecurring;    
120                 appointmentsList.Add(newAppt);    
121    
122                 newAppt = new Appointment();    
123                 newAppt.Start = new DateTime(2008, 7, 14, 0, 0, 0);    
124                 newAppt.End = newAppt.Start.AddDays(1);    
125                 newAppt.ID = Guid.NewGuid();    
126                 newAppt.Subject = "All Day 3";    
127                 newAppt.ToolTip = "All Day 3";    
128                 newAppt.RecurrenceState = RecurrenceState.NotRecurring;    
129                 appointmentsList.Add(newAppt);    
130    
131                 return appointmentsList;    
132             }    
133    
134             public override System.Collections.Generic.IEnumerable<ResourceType> GetResourceTypes(RadScheduler owner)    
135             {    
136                 return null;    
137             }    
138    
139             public override System.Collections.Generic.IEnumerable<Resource> GetResourcesByType(RadScheduler owner, string resourceType)    
140             {    
141                 return null;    
142             }    
143    
144             public override void Insert(RadScheduler owner, Appointment appointmentToInsert)    
145             {    
146    
147             }    
148    
149             public override void Update(RadScheduler owner, Appointment appointmentToUpdate)    
150             {    
151    
152             }    
153         }    
154     }    
155 }    
156    
Now I have couple of questions:

1) I need to attach my dropdownlist (SharePoint DataSource) to scheduler with excatly same result as the example aforementioned. (http://demos.telerik.com/ASPNET/Prometheus/Scheduler/Examples/Resources/DefaultCS.aspx, Defining resources). For e.g. If in dropdownlist my name is selected then only my appointment / event is selected without refresh. I guess its done through AJAX.

2) In the EditForm, under "More details", instead of Room, I have to have a event category

like Business trip, Vacation, sick leave with proper color code.
For e.g. for business trip - color could be blue, vacation - could could be pink.

Could you please advice on this and how can i achieve this?
Web Part code would be very helpful.

Thanks.

Cheers,
Aroh


1 Answer, 1 is accepted

Sort by
0
Dimitar Milushev
Telerik team
answered on 25 Nov 2008, 01:34 PM
Hi Aroh Shukla,

The Room/Event category functionality is implemented using Resources. Since you are creating your own Scheduler Provider you need to implement the GetResourceTypes and GetResourcesByType methods. You can see an example implementation in the DbSchedulerProvider example - http://demos.telerik.com/ASPNET/Prometheus/Scheduler/Examples/DbSchedulerProvider/DefaultCS.aspx.

Once you have a properly implemented Provider, you can easily wire the GetAppointments method to depend on a dropdown to filter only the appointments you want to display.

Greetings,
Dimitar Milushev
the Telerik team

Check out Telerik Trainer, the state of the art learning tool for Telerik products.
Tags
Scheduler
Asked by
Aroh Shukla
Top achievements
Rank 1
Answers by
Dimitar Milushev
Telerik team
Share this question
or