Hi, I have a scheduler control setup. I can have a variable number of user resources which are used to group the appointments, so columns can go off the right edge of the screen.
I have some code that works for radgrids which setup the viewport and allows scrolling while draggin. While this might work for the scheduler, the problem is that as soon as you drag an appointment off the right side of the screen, it is no longer “being dragged”
Is there a way to allow scrolling through columns off the right side of the screen while dragging an appointment?
Thanks
James
protected
void
dispTimeline_NavigationCommand(
object
sender, Telerik.Web.UI.SchedulerNavigationCommandEventArgs e)
{
switch
(e.Command)
{
case
Telerik.Web.UI.SchedulerNavigationCommand.NavigateToPreviousPeriod:
dispTimeline.SelectedDate = dispTimeline.SelectedDate.AddDays(-1);
e.Cancel =
true
;
break
;
case
Telerik.Web.UI.SchedulerNavigationCommand.NavigateToNextPeriod:
dispTimeline.SelectedDate = dispTimeline.SelectedDate.AddDays(1);
e.Cancel =
true
;
break
;
case
SchedulerNavigationCommand.SwitchToSelectedDay:
dispTimeline.SelectedDate = e.SelectedDate.AddDays(-3);
e.Cancel =
true
;
break
;
case
SchedulerNavigationCommand.NavigateToSelectedDate:
RadCalendar popupCalendar = dispTimeline.FindControl(
"SelectedDateCalendar"
)
as
RadCalendar;
dispTimeline.SelectedDate = popupCalendar.SelectedDate.AddDays(-3);
// this doesn't work either
//dispTimeline.SelectedDate = popupCalendar.FocusedDate;
e.Cancel =
true
;
break
;
}
}
<
telerik:RadScheduler
ID
=
"dispTimeline"
runat
=
"server"
DataDescriptionField
=
"Observations"
DataEndField
=
"ToDate"
DataKeyField
=
"ReservationID"
DataSourceID
=
"SqlDataSource1"
DataStartField
=
"FromDate"
DataSubjectField
=
"Description"
DayEndTime
=
"23:59:00"
DayStartTime
=
"00:00:00"
EnableDescriptionField
=
"True"
FirstDayOfWeek
=
"Monday"
HoursPanelTimeFormat
=
"H:mm"
LastDayOfWeek
=
"Sunday"
SelectedView
=
"TimelineView"
TimeLabelRowSpan
=
"1"
TimeZoneID
=
"GTB Standard Time"
TimeZoneOffset
=
"02:00:00"
WorkDayEndTime
=
"18:00:00"
WorkDayStartTime
=
"09:00:00"
MinimumInlineFormHeight
=
"200"
OverflowBehavior
=
"Expand"
Localization-HeaderMultiDay
=
"Work Week"
ColumnWidth
=
"50px"
ShowViewTabs
=
"False"
OnNavigationCommand
=
"dispTimeline_NavigationCommand"
AllowDelete
=
"False"
AllowEdit
=
"False"
AllowInsert
=
"False"
OnAppointmentClick
=
"dispTimeline_AppointmentClick"
GroupingDirection
=
"Vertical"
OnDataBound
=
"dispTimeline_DataBound"
OnNavigationComplete
=
"dispTimeline_NavigationComplete"
SelectedDate
=
"2012-10-01"
OnPreRender
=
"dispTimeline_PreRender"
>
<
AdvancedForm
Modal
=
"true"
Enabled
=
"False"
/>
<
ResourceTypes
>
<
telerik:ResourceType
Name
=
"grpTimeline"
DataSourceID
=
"dsGrup"
KeyField
=
"ID"
TextField
=
"Denumire"
ForeignKeyField
=
""
/>
<
telerik:ResourceType
KeyField
=
"StatusID"
Name
=
"Status"
TextField
=
"Description"
ForeignKeyField
=
"StatusID"
DataSourceID
=
"dsStatus"
/>
</
ResourceTypes
>
<
ResourceStyles
>
<
telerik:ResourceStyleMapping
Type
=
"Status"
Text
=
"Rezervare"
ApplyCssClass
=
"rsCategoryGreen"
/>
<
telerik:ResourceStyleMapping
Type
=
"Status"
Text
=
"Contract in derulare"
ApplyCssClass
=
"rsCategoryRed"
/>
<
telerik:ResourceStyleMapping
Type
=
"Status"
Text
=
"Contract inchis"
ApplyCssClass
=
"rsCategoryBlue"
/>
<
telerik:ResourceStyleMapping
Type
=
"Status"
Text
=
"Contract facturat"
ApplyCssClass
=
"rsCategoryDarkBlue"
/>
<
telerik:ResourceStyleMapping
Type
=
"Status"
Text
=
"Alte rezervari"
ApplyCssClass
=
"rsCategoryYellow"
/>
<
telerik:ResourceStyleMapping
Type
=
"Status"
Text
=
"Indisponibil"
BackColor
=
"DarkGray"
/>
</
ResourceStyles
>
<
Localization
HeaderMultiDay
=
"Work Week"
></
Localization
>
<
TimelineView
HeaderDateFormat
=
"dd.MMM.yyyy"
NumberOfSlots
=
"35"
SlotDuration
=
"1.00:00:00"
UserSelectable
=
"true"
SortingMode
=
"Global"
ColumnHeaderDateFormat
=
"dd.MMM"
/>
<
MultiDayView
UserSelectable
=
"false"
/>
<
DayView
UserSelectable
=
"false"
/>
<
WeekView
UserSelectable
=
"false"
/>
<
MonthView
UserSelectable
=
"false"
/>
</
telerik:RadScheduler
>
Protected
Sub
Clearfilters_Click(sender
As
Object
, e
As
System.EventArgs)
Handles
Clearfilters.Click
RiskAssessmentsGrid.MasterTableView.FilterExpression =
String
.Empty
For
Each
column
As
GridColumn
In
RiskAssessmentsGrid.MasterTableView.RenderColumns
If
TypeOf
column
Is
GridBoundColumn
Then
Dim
boundColumn
As
GridBoundColumn = TryCast(column, GridBoundColumn)
boundColumn.CurrentFilterValue =
String
.Empty
End
If
Next
For
Each
item
As
GridFilteringItem
In
RiskAssessmentsGrid.MasterTableView.GetItems(GridItemType.FilteringItem)
Dim
f
As
RadDatePicker =
DirectCast
(item.FindControl(
"FromDateCreatedPicker"
), RadDatePicker)
Dim
t
As
RadDatePicker =
DirectCast
(item.FindControl(
"ToDateCreatedPicker"
), RadDatePicker)
f.SelectedDate = DateTime.Now.
Date
t.SelectedDate = DateTime.Now.
Date
Next
RiskAssessmentsGrid.MasterTableView.Rebind()
RiskAssessmentsGrid.Rebind()
End
Sub
function clientShow(sender, eventArgs) {
var tree = $find("<%= tvwBidPackageFolders.ClientID %>");
var node = tree.get_selectedNode();
if (node) {
var attributes = node.get_attributes();
var attribute1 = attributes.getAttribute("fid");
sender.argument = attribute1;
}
}
function pageLoad() {
txtInput = $get('txtUserInput');
var currentWindow = GetRadWindow();
txtInput.value = currentWindow.argument;
}
Hello,
I'm using RadToolTip in a RadScheduler with sqldatasource and i can see only and empty RadScheduler. Also, when i press the Save button a null reference exception arises in the following line of the Radscheduler1_AppointmentCreated method: string id = e.Appointment.ID.ToString; (The DataItem and the ID are null). The data insert to the database.
What am i doing wrong;
Thank you very much.
P.S.
I have writthen the following code:
aspx code
<
telerik:RadScriptManager
ID
=
"RadScriptManager1"
runat
=
"server"
>
<
Scripts
>
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name
=
"Telerik.Web.UI.Common.Core.js"
/>
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name
=
"Telerik.Web.UI.Common.jQuery.js"
/>
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name
=
"Telerik.Web.UI.Common.jQueryInclude.js"
/>
</
Scripts
>
</
telerik:RadScriptManager
>
<
script
type
=
"text/javascript"
>
function hideActiveToolTip() {
var tooltip = Telerik.Web.UI.RadToolTip.getCurrent();
if (tooltip) {
tooltip.hide();
}
}
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginRequestHandler);
function beginRequestHandler(sender, args) {
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (args.get_postBackElement().id.indexOf('RadScheduler1') != -1) {
hideActiveToolTip();
}
}
function OnClientRequestStart(sender, args) {
args.set_cancel(true);
var tooltip = Telerik.Web.UI.RadToolTip.getCurrent();
if (tooltip) {
var element = tooltip.get_targetControl();
var apt = $find("<%=RadScheduler1.ClientID %>").getAppointmentFromDomElement(element);
$get("startTime").innerHTML = apt.get_start().format("MM/dd/yyyy HH:mm");
$get("endTime").innerHTML = apt.get_end().format("MM/dd/yyyy HH:mm");
$get("descriptionDiv").innerHTML = apt.get_subject();
tooltip.set_text($get("contentContainer").innerHTML);
}
}
function OnClientAppointmentContextMenu(sender, args) {
hideActiveToolTip();
}
</
script
>
<
telerik:RadScheduler
runat
=
"server"
ID
=
"RadScheduler1"
Width
=
"750px"
TimeZoneOffset
=
"03:00:00"
EnableDescriptionField
=
"true"
SelectedDate
=
"2012-04-16"
DayStartTime
=
"08:00:00"
DayEndTime
=
"18:00:00"
DataSourceID
=
"SqlDataSource1"
DataKeyField
=
"ID"
DataSubjectField
=
"Subject"
DataDescriptionField
=
"Description"
DataStartField
=
"Start"
DataEndField
=
"End"
DataRecurrenceField
=
"RecurrenceRule"
DataRecurrenceParentKeyField
=
"RecurrenceParentID"
DisplayDeleteConfirmation
=
"true"
SelectedView
=
"WeekView"
OnClientAppointmentContextMenu
=
"OnClientAppointmentContextMenu"
CustomAttributeNames
=
"LastModified, Annotations, User"
>
<
AdvancedForm
Modal
=
"true"
/>
<
TimelineView
UserSelectable
=
"false"
/>
<
TimeSlotContextMenuSettings
EnableDefault
=
"true"
/>
<
AppointmentContextMenuSettings
EnableDefault
=
"true"
/>
</
telerik:RadScheduler
>
<
telerik:RadToolTipManager
runat
=
"server"
ID
=
"RadToolTipManager1"
Width
=
"320"
Height
=
"170"
Animation
=
"None"
HideEvent
=
"Default"
Text
=
"Loading..."
OnAjaxUpdate
=
"RadToolTipManager1_AjaxUpdate"
/>
<
div
style
=
"display: none;"
>
<
div
id
=
"contentContainer"
>
<
div
class
=
"appointment-tooltip"
>
<
p
>
Starts on: <
span
id
=
"startTime"
>
<!-- -->
</
span
>
<
br
/>
Ends on: <
span
id
=
"endTime"
>
<!-- -->
</
span
>
</
p
>
<
hr
/>
Description:
<
div
id
=
"descriptionDiv"
>
</
div
>
</
div
>
</
div
>
</
div
>
<
asp:SqlDataSource
ID
=
"SqlDataSource1"
runat
=
"server"
ConnectionString="<%$ ConnectionStrings:HumanResourcesConnectionString %>"
DeleteCommand="DELETE FROM [Schedule] WHERE [ID] = @ID" InsertCommand="INSERT INTO [Schedule] ([Subject], [Description], [Start], [End], [RecurrenceRule], [RecurrenceParentID], [User], [LastModified]) VALUES (@Subject, @Description, @Start, @End, @RecurrenceRule, @RecurrenceParentID, @User, @LastModified)"
SelectCommand="SELECT * FROM [Schedule]"
UpdateCommand="UPDATE [Schedule] SET [Subject] = @Subject, [Description]=@Description, [Start] = @Start, [End] = @End, [RecurrenceRule]=@RecurrenceRule, [RecurrenceParentID]=@RecurrenceParentID, [User]=@User, [LastModified]=@LastModified WHERE [ID] = @ID">
<
SelectParameters
>
<
asp:SessionParameter
Name
=
"User"
SessionField
=
"User"
DefaultValue
=
""
/>
</
SelectParameters
>
<
DeleteParameters
>
<
asp:Parameter
Name
=
"ID"
Type
=
"Int32"
/>
</
DeleteParameters
>
<
UpdateParameters
>
<
asp:Parameter
Name
=
"Subject"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"Description"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"Start"
Type
=
"DateTime"
/>
<
asp:Parameter
Name
=
"End"
Type
=
"DateTime"
/>
<
asp:Parameter
Name
=
"ID"
Type
=
"Int32"
/>
<
asp:Parameter
Name
=
"RecurrenceRule"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"RecurrenceParentID"
Type
=
"Int32"
/>
<
asp:Parameter
Name
=
"Annotations"
Type
=
"String"
/>
<
asp:SessionParameter
Name
=
"User"
SessionField
=
"User"
DefaultValue
=
""
/>
<
asp:Parameter
Name
=
"LastModified"
Type
=
"String"
/>
</
UpdateParameters
>
<
InsertParameters
>
<
asp:Parameter
Name
=
"Subject"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"Description"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"Start"
Type
=
"DateTime"
/>
<
asp:Parameter
Name
=
"End"
Type
=
"DateTime"
/>
<
asp:Parameter
Name
=
"Annotations"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"RecurrenceRule"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"RecurrenceParentID"
Type
=
"Int32"
/>
<
asp:SessionParameter
Name
=
"User"
SessionField
=
"User"
DefaultValue
=
""
/>
<
asp:Parameter
Name
=
"LastModified"
Type
=
"String"
/>
</
InsertParameters
>
</
asp:SqlDataSource
>
aspx.cs code
public
partial
class
_Default : System.Web.UI.Page
{
private
void
Page_Load(
object
sender, EventArgs e)
{
RadScheduler1.AppointmentCreated += RadScheduler1_AppointmentCreated;
RadScheduler1.DataBound += RadScheduler1_DataBound;
RadToolTipManager1.OnClientRequestStart = String.Empty;
}
protected
void
RadScheduler1_AppointmentDataBound(
object
sender, SchedulerEventArgs e)
{
RadToolTipManager1.TargetControls.Clear();
ScriptManager.RegisterStartupScript(
this
,
typeof
(Page),
"HideToolTip"
,
"hideActiveToolTip();"
,
true
);
}
protected
void
RadScheduler1_AppointmentCreated(
object
sender, AppointmentCreatedEventArgs e)
{
if
(e.Appointment.Visible && !IsAppointmentRegisteredForTooltip(e.Appointment))
{
string
id = e.Appointment.ID.ToString();
foreach
(
string
domElementID
in
e.Appointment.DomElements)
{
RadToolTipManager1.TargetControls.Add(domElementID, id,
true
);
}
}
}
protected
void
RadToolTipManager1_AjaxUpdate(
object
sender, ToolTipUpdateEventArgs e)
{
int
aptId;
Appointment apt;
if
(!
int
.TryParse(e.Value,
out
aptId))
//The appoitnment is occurrence and FindByID expects a string
apt = RadScheduler1.Appointments.FindByID(e.Value);
else
//The appointment is not occurrence and FindByID expects an int
apt = RadScheduler1.Appointments.FindByID(aptId);
AppointmentToolTip toolTip = (AppointmentToolTip)LoadControl(
"AppointmentToolTip.ascx"
);
toolTip.TargetAppointment = apt;
e.UpdatePanel.ContentTemplateContainer.Controls.Add(toolTip);
}
protected
void
RadScheduler1_DataBound(
object
sender, EventArgs e)
{
RadToolTipManager1.TargetControls.Clear();
ScriptManager.RegisterStartupScript(
this
,
typeof
(Page),
"HideToolTip"
,
"hideActiveToolTip();"
,
true
);
}
private
bool
IsAppointmentRegisteredForTooltip(Appointment apt)
{
foreach
(ToolTipTargetControl targetControl
in
RadToolTipManager1.TargetControls)
{
if
(apt.DomElements.Contains(targetControl.TargetControlID))
{
return
true
;
}
}
return
false
;
}
}