I'm trying to achieve a drag from a RadTreeNode(basically a task) to a RadSchedulerTimeSlot (hence creating an appointment for that task). Now the problem is that NodeDrop is not firing when I drag the TreeNode to the RadScheduler.
Here's what I have:-
RadTreeView:
RadScheduler:
rowDropping Javascript:
HiddenTextbox:
CodeBehind:
Most of it is stripped from your demos. If you need the rest of the code I'd be happy to supply the whole page and codebehind.
Thanks in advance.
Daryl
Here's what I have:-
RadTreeView:
<telerik:RadTreeView ID="radTreeView" runat="server" CssClass="treeView" EnableDragAndDrop="True" OnClientNodeDropping="rowDropping" OnNodeDrop="radTreeView_NodeDrop" Skin="Windows7"> <Nodes> <telerik:RadTreeNode runat="server" Owner="radTreeView" Text="Test"> <Nodes> <telerik:RadTreeNode runat="server" Owner="" Text="Test2"> </telerik:RadTreeNode> <telerik:RadTreeNode runat="server" Owner="" Text="Test"> </telerik:RadTreeNode> </Nodes> </telerik:RadTreeNode> <telerik:RadTreeNode runat="server" Owner="radTreeView" Text="Test2"> </telerik:RadTreeNode> </Nodes></telerik:RadTreeView>RadScheduler:
<telerik:RadScheduler ID="radScheduler" runat="server" DayEndTime="19:00:00" FirstDayOfWeek="Monday" LastDayOfWeek="Sunday" OverflowBehavior="Expand" SelectedView="WeekView" ShowAllDayRow="False" ShowFooter="False" Skin="Windows7" WorkDayEndTime="19:00:00" OnClientAppointmentClick="OnClientAppointmentClick" OnClientTimeSlotClick="OnClientTimeSlotClick" CssClass="scheduler" ShowViewTabs="False"> <AdvancedForm Modal="True" /> <TimelineView UserSelectable="False" /> <MonthView UserSelectable="False" /></telerik:RadScheduler>rowDropping Javascript:
function rowDropping(sender, eventArgs) { // Fired when the user drops a grid row var htmlElement = eventArgs.get_htmlElement(); var scheduler = $find('<%= radScheduler.ClientID %>'); if (isPartOfSchedulerAppointmentArea(htmlElement)) { // The row was dropped over the scheduler appointment area // Find the exact time slot and save its unique index in the hidden field var timeSlot = scheduler._activeModel.getTimeSlotFromDomElement(htmlElement); // $get("TargetSlotHiddenField").value = timeSlot.get_index(); $get('<%= TargetSlotHiddenField.ClientID %>').value = timeSlot.get_index(); // The HTML needs to be set in order for the postback to execute normally eventArgs.set_htmlElement('<%= TargetSlotHiddenField.ClientID %>'); } else { // The node was dropped elsewhere on the document eventArgs.set_cancel(true); }}HiddenTextbox:
<input type="hidden" runat="server" id="TargetSlotHiddenField" />CodeBehind:
protected void radTreeView_NodeDrop(object sender, RadTreeNodeDragDropEventArgs e){ RadTreeNode treeNode = e.DraggedNodes[0]; string id = treeNode.Value; string subject = treeNode.Text; string targetSlotIndex = TargetSlotHiddenField.Value; if (targetSlotIndex != string.Empty) { HandleSchedulerDrop(id, subject, targetSlotIndex); TargetSlotHiddenField.Value = string.Empty; }}private void HandleSchedulerDrop(string id, string subject, string targetSlotIndex){ radScheduler.Rebind(); ISchedulerTimeSlot slot = radScheduler.GetTimeSlotFromIndex(targetSlotIndex); TimeSpan duration = TimeSpan.FromHours(1); if (slot.Duration == TimeSpan.FromDays(1)) { duration = slot.Duration; } ScheduleTask(id, subject, slot.Start, slot.Start.Add(duration));}Most of it is stripped from your demos. If you need the rest of the code I'd be happy to supply the whole page and codebehind.
Thanks in advance.
Daryl