
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; } }