Hello,
I'm trying to move my first steps with RadScheduler, but probably I'm missing something obvious since I really can't get it to work as expected.
I have some questions, which should be easy to answer:
I've tried setting it in designer, aspx code, code behind but none of them seems to work since it still displays from 00:00 to 24:00.
No problem with WorkDayStartTime and WorkDayEndTime they seems to work properly.
Am I doing something wrong? This is the latest configuration in code behind:
RadScheduler1.DayStartTime = new TimeSpan(8, 0, 0);
RadScheduler1.DayEndTime = new TimeSpan(20, 0, 0);
EDIT: Resolved, I had the showfulltime option conflicting with the above settings
I'm trying to achieve some sort of full screen agenda, 100% width and everything runs fine in IE, but when in Chrome the scheduler doesn't want to stretch to 100% width even if it's div container does and radscheduler's width property is set to 100%. Furthermore the vertical scrollbar is disabled until I resize the Chrome window.
EDIT: Could you provide a working layout with fixed header on top of the page, fixed footer on bottom of the page, and the scheduler filling the central part adapting to any window resize? I've tried my best, but still can't find a way out.
I'm using the very appreciated metro skin, but when changing the colors by means of:
<telerik:ResourceStyleMapping Type="User" Key="1" Text="Resource 1" ApplyCssClass="rsCategoryBlue" />
it only applies to top border, while in the example screenshots I see the full appoinment box with a nice green backround. Should I go with some more complicated setting for the background?
EDIT: Resolved, I modified the appointment template to reflect my background color needs
Everything works as expected after copying the example code except the refresh that on my side keeps giving a postback instead of the cute busy indicator. What am I missing? Could you isolate the example so that I can reproduce it?
Best regards
I'm trying to move my first steps with RadScheduler, but probably I'm missing something obvious since I really can't get it to work as expected.
I have some questions, which should be easy to answer:
- DayStartTime and DayEndTime should tell the control the first and last hour to display right?
I've tried setting it in designer, aspx code, code behind but none of them seems to work since it still displays from 00:00 to 24:00.
No problem with WorkDayStartTime and WorkDayEndTime they seems to work properly.
Am I doing something wrong? This is the latest configuration in code behind:
RadScheduler1.DayStartTime = new TimeSpan(8, 0, 0);
RadScheduler1.DayEndTime = new TimeSpan(20, 0, 0);
EDIT: Resolved, I had the showfulltime option conflicting with the above settings
- Works in IE8, not the same in Chrome
I'm trying to achieve some sort of full screen agenda, 100% width and everything runs fine in IE, but when in Chrome the scheduler doesn't want to stretch to 100% width even if it's div container does and radscheduler's width property is set to 100%. Furthermore the vertical scrollbar is disabled until I resize the Chrome window.
EDIT: Could you provide a working layout with fixed header on top of the page, fixed footer on bottom of the page, and the scheduler filling the central part adapting to any window resize? I've tried my best, but still can't find a way out.
- Appointment background
I'm using the very appreciated metro skin, but when changing the colors by means of:
<telerik:ResourceStyleMapping Type="User" Key="1" Text="Resource 1" ApplyCssClass="rsCategoryBlue" />
it only applies to top border, while in the example screenshots I see the full appoinment box with a nice green backround. Should I go with some more complicated setting for the background?
EDIT: Resolved, I modified the appointment template to reflect my background color needs
- I tried starting from scratch with the Scheduler / Binding to Generic List example
Everything works as expected after copying the example code except the refresh that on my side keeps giving a postback instead of the cute busy indicator. What am I missing? Could you isolate the example so that I can reproduce it?
Best regards
7 Answers, 1 is accepted
0
Hello Eugenio,
Regarding your last edit about the busy indicator, this is a feature of RadAjaxManager so please make sure you have the following code in your page:
As for the other issues, can you confirm that you have manage to resolve them or is there still anything pending?
Greetings, Peter
the Telerik team
Regarding your last edit about the busy indicator, this is a feature of RadAjaxManager so please make sure you have the following code in your page:
<
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"
/>
As for the other issues, can you confirm that you have manage to resolve them or is there still anything pending?
Greetings, Peter
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.
0
Eugenio
Top achievements
Rank 1
answered on 27 Jun 2012, 12:24 PM
Hello Peter,
thanks for the answer.
First of all as for the sentence:
>As for the other issues, can you confirm that you have manage to resolve them or is there still anything pending?
I'm still facing all the issues mentioned, I was looking for other stuff in the meanwhile. I guess my problem is somewhere in the configuration of the project or in web.config since there are too many issues to be only a coding error.
I would appreciate if you could upload a simple working project so I can start studying from it.
About the RadAjaxManager, I double checked the code and the code looks right to me.
I'm posting it for reference:
thanks for the answer.
First of all as for the sentence:
>As for the other issues, can you confirm that you have manage to resolve them or is there still anything pending?
I'm still facing all the issues mentioned, I was looking for other stuff in the meanwhile. I guess my problem is somewhere in the configuration of the project or in web.config since there are too many issues to be only a coding error.
I would appreciate if you could upload a simple working project so I can start studying from it.
About the RadAjaxManager, I double checked the code and the code looks right to me.
I'm posting it for reference:
<%@ Page Language="C#" AutoEventWireup="true" Inherits="Telerik.Web.Examples.Scheduler.BindToList.DefaultCS"
CodeFile="DefaultCS.aspx.cs" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd">
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
id
=
"Head1"
runat
=
"server"
>
</
head
>
<
body
class
=
"BODY"
>
<
form
id
=
"Form1"
method
=
"post"
runat
=
"server"
>
<
telerik:RadScriptManager
runat
=
"server"
ID
=
"RadScriptManager1"
/>
<
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"
/>
<
div
class
=
"exampleContainer"
>
<
telerik:RadScheduler
runat
=
"server"
ID
=
"RadScheduler1"
Width
=
"750px"
TimeZoneOffset
=
"03:00:00"
OnAppointmentInsert
=
"RadScheduler1_AppointmentInsert"
OnAppointmentUpdate
=
"RadScheduler1_AppointmentUpdate"
OnAppointmentDelete
=
"RadScheduler1_AppointmentDelete"
DataKeyField
=
"ID"
DataSubjectField
=
"Subject"
DataStartField
=
"Start"
DataEndField
=
"End"
DataRecurrenceField
=
"RecurrenceRule"
DataRecurrenceParentKeyField
=
"RecurrenceParentId"
DataReminderField
=
"Reminder"
>
<
AdvancedForm
Modal
=
"true"
/>
<
TimelineView
UserSelectable
=
"false"
/>
<
TimeSlotContextMenuSettings
EnableDefault
=
"true"
/>
<
AppointmentContextMenuSettings
EnableDefault
=
"true"
/>
<
Reminders
Enabled
=
"true"
/>
</
telerik:RadScheduler
>
</
div
>
</
form
>
</
body
>
</
html
>
using
System;
using
System.Collections.Generic;
using
Telerik.Web.UI;
namespace
Telerik.Web.Examples.Scheduler.BindToList
{
public
partial
class
DefaultCS : System.Web.UI.Page
{
private
const
string
AppointmentsKey =
"Telerik.Web.Examples.Scheduler.BindToList.CS.Apts"
;
private
List<AppointmentInfo> Appointments
{
get
{
List<AppointmentInfo> sessApts = Session[AppointmentsKey]
as
List<AppointmentInfo>;
if
(sessApts ==
null
)
{
sessApts =
new
List<AppointmentInfo>();
Session[AppointmentsKey] = sessApts;
}
return
sessApts;
}
}
protected
override
void
OnInit(EventArgs e)
{
base
.OnInit(e);
if
(!IsPostBack)
{
Session.Remove(AppointmentsKey);
InitializeResources();
InitializeAppointments();
}
RadScheduler1.DataSource = Appointments;
}
protected
void
RadScheduler1_AppointmentInsert(
object
sender, SchedulerCancelEventArgs e)
{
Appointments.Add(
new
AppointmentInfo(e.Appointment));
}
protected
void
RadScheduler1_AppointmentUpdate(
object
sender, AppointmentUpdateEventArgs e)
{
AppointmentInfo ai = FindById(e.ModifiedAppointment.ID);
ai.CopyInfo(e.ModifiedAppointment);
}
protected
void
RadScheduler1_AppointmentDelete(
object
sender, SchedulerCancelEventArgs e)
{
Appointments.Remove(FindById(e.Appointment.ID));
}
private
void
InitializeResources()
{
ResourceType resType =
new
ResourceType(
"User"
);
resType.ForeignKeyField =
"UserID"
;
RadScheduler1.ResourceTypes.Add(resType);
RadScheduler1.Resources.Add(
new
Resource(
"User"
, 1,
"Alex"
));
RadScheduler1.Resources.Add(
new
Resource(
"User"
, 2,
"Bob"
));
RadScheduler1.Resources.Add(
new
Resource(
"User"
, 3,
"Charlie"
));
}
private
void
InitializeAppointments()
{
DateTime start = DateTime.UtcNow.Date;
start = start.AddHours(6);
Appointments.Add(
new
AppointmentInfo(
"Take the car to the service"
, start, start.AddHours(1),
string
.Empty,
null
,
new
Reminder(30).ToString(), 1));
Appointments.Add(
new
AppointmentInfo(
"Meeting with Alex"
, start.AddHours(2), start.AddHours(3),
string
.Empty,
null
,
string
.Empty, 2));
start = start.AddDays(-1);
DateTime dayStart = RadScheduler1.UtcDayStart(start);
Appointments.Add(
new
AppointmentInfo(
"Bob's Birthday"
, dayStart, dayStart.AddDays(1),
string
.Empty,
null
,
string
.Empty, 1));
Appointments.Add(
new
AppointmentInfo(
"Call Charlie about the Project"
, start.AddHours(2), start.AddHours(3),
string
.Empty,
null
,
string
.Empty, 2));
start = start.AddDays(2);
Appointments.Add(
new
AppointmentInfo(
"Get the car from the service"
, start.AddHours(2), start.AddHours(3),
string
.Empty,
null
,
string
.Empty, 1));
}
private
AppointmentInfo FindById(
object
ID)
{
foreach
(AppointmentInfo ai
in
Appointments)
{
if
(ai.ID.Equals(ID))
{
return
ai;
}
}
return
null
;
}
class
AppointmentInfo
{
private
readonly
string
_id;
private
string
_subject;
private
DateTime _start;
private
DateTime _end;
private
string
_recurrenceRule;
private
string
_recurrenceParentId;
private
string
_reminder;
private
int
? _userID;
public
string
ID
{
get
{
return
_id; }
}
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
_recurrenceRule; }
set
{ _recurrenceRule = value; }
}
public
string
RecurrenceParentID
{
get
{
return
_recurrenceParentId; }
set
{ _recurrenceParentId = value; }
}
public
int
? UserID
{
get
{
return
_userID; }
set
{ _userID = value; }
}
public
string
Reminder
{
get
{
return
_reminder; }
set
{ _reminder = value; }
}
private
AppointmentInfo()
{
_id = Guid.NewGuid().ToString();
}
public
AppointmentInfo(
string
subject, DateTime start, DateTime end,
string
recurrenceRule,
string
recurrenceParentID,
string
reminder,
int
? userID)
:
this
()
{
_subject = subject;
_start = start;
_end = end;
_recurrenceRule = recurrenceRule;
_recurrenceParentId = recurrenceParentID;
_reminder = reminder;
_userID = userID;
}
public
AppointmentInfo(Appointment source)
:
this
()
{
CopyInfo(source);
}
public
void
CopyInfo(Appointment source)
{
Subject = source.Subject;
Start = source.Start;
End = source.End;
RecurrenceRule = source.RecurrenceRule;
if
(source.RecurrenceParentID !=
null
)
{
RecurrenceParentID = source.RecurrenceParentID.ToString();
}
if
(!String.IsNullOrEmpty(Reminder))
{
Reminder = source.Reminders[0].ToString();
}
Resource user = source.Resources.GetResourceByType(
"User"
);
if
(user !=
null
)
{
UserID = (
int
?)user.Key;
}
else
{
UserID =
null
;
}
}
}
}
}
0
Hello Eugenio,
Indeed, there is a peculiarity with RadAjaxLoadingPanel - the Skin property has to be set explicitly for the loading image to appear -
The online demo works without this setting, because RadSkinManager is used. More details on the matter you can find in this help topic -
RadAjaxLoadingPanel supports skinning and you can change its skin by setting the Skin property to the name of the respective skin. The default value of the Skin property is "" (no skin).
If the Skin property is set, transparency is applied by default from the skin. However you can change this behavior by setting EnableSkinTransparency="false".
Also, I discovered a glitch with the reminders. To correct the problem, please modify the code like this:
Also, you can use BackColor to style appointments per resource:
If the Width property is not set, it will default to 100%. In this case, RadScheduler stretches as expected in all supported browsers, including Chrome and IE9.
Finally, you can control vertical scrolling with the OverflowBehavior property ("Scroll" is the default value, "Expand" is the other possible value).
Attached is a sample for reference.
Greetings,
Peter
the Telerik team
Indeed, there is a peculiarity with RadAjaxLoadingPanel - the Skin property has to be set explicitly for the loading image to appear -
<
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"
Skin
=
"Default"
/>
The online demo works without this setting, because RadSkinManager is used. More details on the matter you can find in this help topic -
RadAjaxLoadingPanel supports skinning and you can change its skin by setting the Skin property to the name of the respective skin. The default value of the Skin property is "" (no skin).
If the Skin property is set, transparency is applied by default from the skin. However you can change this behavior by setting EnableSkinTransparency="false".
Also, I discovered a glitch with the reminders. To correct the problem, please modify the code like this:
public
void
CopyInfo(Appointment source)
{
Subject = source.Subject;
Start = source.Start;
End = source.End;
RecurrenceRule = source.RecurrenceRule;
if
(source.RecurrenceParentID !=
null
)
{
RecurrenceParentID = source.RecurrenceParentID.ToString();
}
if
(source.Reminders.Count != 0)
{
Reminder = source.Reminders[0].ToString();
}
else
{
Reminder = String.Empty;
}
Resource user = source.Resources.GetResourceByType(
"User"
);
if
(user !=
null
)
{
UserID = (
int
?)user.Key;
}
else
{
UserID =
null
;
}
}
Also, you can use BackColor to style appointments per resource:
<
ResourceStyles
>
<
telerik:ResourceStyleMapping
Type
=
"User"
Text
=
"Alex"
BackColor
=
"Aqua"
/>
<
telerik:ResourceStyleMapping
Type
=
"User"
Text
=
"Bob"
BackColor
=
"Coral"
/>
<
telerik:ResourceStyleMapping
Type
=
"User"
Text
=
"Charlie"
BackColor
=
"Gold"
/>
</
ResourceStyles
>
If the Width property is not set, it will default to 100%. In this case, RadScheduler stretches as expected in all supported browsers, including Chrome and IE9.
Finally, you can control vertical scrolling with the OverflowBehavior property ("Scroll" is the default value, "Expand" is the other possible value).
Attached is a sample for reference.
Greetings,
Peter
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.
0
Eugenio
Top achievements
Rank 1
answered on 05 Jul 2012, 08:22 AM
Indeed setting the skin definitely fixed all the busy indicator issues :)
Ok last issue left:
This one is driving me mad, but each solution I try has drawbacks. Working with CSS doesn't allow for a fixed size, resizing the container with jQuery works in some browsers but not in others.
I thought having a full screen agenda was a common request, but I don't seem to be able to find related topics.
Best regards
Ok last issue left:
- Could you provide a working layout with fixed header on top of the page, fixed footer on bottom of the page, and the scheduler filling the central part adapting to any window resize? I've tried my best, but still can't find a way out.
This one is driving me mad, but each solution I try has drawbacks. Working with CSS doesn't allow for a fixed size, resizing the container with jQuery works in some browsers but not in others.
I thought having a full screen agenda was a common request, but I don't seem to be able to find related topics.
Best regards
0
Hello Eugenio,
I am afraid that this requirement will be difficult to achieve with RadScheduler and I don't have ideas how to proceed.
Kind regards,
Peter
the Telerik team
I am afraid that this requirement will be difficult to achieve with RadScheduler and I don't have ideas how to proceed.
Kind regards,
Peter
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.
0
Eugenio
Top achievements
Rank 1
answered on 05 Jul 2012, 03:04 PM
I spent some more time on the matter, this is the best I could achieve with a little help of jQuery (markup only, code behind doesn't change).
Works in IE8 and Chrome at the moment.
Works in IE8 and Chrome at the moment.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Layout.aspx.cs" Inherits="Prime.Layout" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<!DOCTYPE html>
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
runat
=
"server"
>
<
title
>Layout</
title
>
<
script
src
=
"Scripts/jquery-1.4.1.js"
type
=
"text/javascript"
></
script
>
<
style
type
=
"text/css"
>
body
{
margin: 0;
}
div#header
{
background: red;
position: fixed;
top: 0;
left: 0;
height: 100px;
width: 100%;
}
div#content
{
background: yellow;
margin-top: 100px;
width: 100%;
}
div#footer
{
background: green;
position: fixed;
bottom: 0;
left: 0;
height: 100px;
width: 100%;
}
img
{
border: 1px solid purple;
}
</
style
>
<
script
type
=
"text/javascript"
>
</
script
>
<
telerik:radcodeblock
id
=
"RadCodeBlock1"
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
$(document).ready(function () {
setContentHeight();
$(window).resize(function () {
resizeContent();
});
});
function pageLoad() {
refreshScheduler();
}
function setContentHeight() {
$('#content').css('height', $(window).height() - $('#header').height() - $('#footer').height());
//alert($('#content').css('height'));
}
function resizeContent() {
setContentHeight();
refreshScheduler();
}
function refreshScheduler() {
var scheduler = $find('<%=RadScheduler1.ClientID %>');
//alert(scheduler.get_id() + " " + $('#content').css('height'));
scheduler.get_element().style.height = $('#content').css('height');
scheduler.repaint();
}
</
script
>
</
telerik:radcodeblock
>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
telerik:radscriptmanager
runat
=
"server"
id
=
"RadScriptManager1"
/>
<
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"
skin
=
"Default"
/>
<
div
id
=
"header"
>
Header</
div
>
<
div
id
=
"content"
>
<
telerik:radscheduler
runat
=
"server"
id
=
"RadScheduler1"
daystarttime
=
"07:00:00"
dayendtime
=
"22:00:00"
timezoneoffset
=
"03:00:00"
onappointmentinsert
=
"RadScheduler1_AppointmentInsert"
onappointmentupdate
=
"RadScheduler1_AppointmentUpdate"
onappointmentdelete
=
"RadScheduler1_AppointmentDelete"
datakeyfield
=
"ID"
datasubjectfield
=
"Subject"
datastartfield
=
"Start"
dataendfield
=
"End"
datarecurrencefield
=
"RecurrenceRule"
datarecurrenceparentkeyfield
=
"RecurrenceParentId"
datareminderfield
=
"Reminder"
showfulltime
=
"false"
showfooter
=
"false"
width
=
"100%"
>
<
AdvancedForm
Modal
=
"true"
/>
<
TimelineView
UserSelectable
=
"false"
/>
<
TimeSlotContextMenuSettings
EnableDefault
=
"true"
/>
<
AppointmentContextMenuSettings
EnableDefault
=
"true"
/>
<
Reminders
Enabled
=
"true"
/>
</
telerik:radscheduler
>
</
div
>
<
div
id
=
"footer"
>
Footer</
div
>
</
form
>
</
body
>
</
html
>
0
Hi Eugenio,
Thank you for sharing your workaround in the forum.
Regards,
Peter
the Telerik team
Thank you for sharing your workaround in the forum.
Regards,
Peter
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.